Skip to content

Commit

Permalink
Merge pull request #14664 from ethereum/crowdin-january-nl-2025011316…
Browse files Browse the repository at this point in the history
…2942168

chore: import translations for nl
  • Loading branch information
corwintines authored Jan 14, 2025
2 parents 96bb938 + 5e86b6b commit c8d0b17
Show file tree
Hide file tree
Showing 7 changed files with 2,156 additions and 0 deletions.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,282 @@
---
title: Smart contracts compileren
description: Een uitleg waarom u smart contracts moet compileren en wat compilatie eigenlijk doet.
lang: nl
incomplete: true
---

U moet uw contract compileren zodat uw webapp en de Ethereum virtual machine (EVM) het kunnen begrijpen.

## Vereisten {#prerequisites}

Het kan handig zijn om onze intro over [smart contracts](/developers/docs/smart-contracts/) en de [Ethereum virtual machine](/developers/docs/evm/) te lezen voordat u begint met compilatie.

## De EVM {#the-evm}

Om de [EVM](/developers/docs/evm/) uw contract te kunnen laten uitvoeren, moet het in **bytecode** staan. Compilatie verandert dit:

```solidity
pragma solidity 0.4.24;
contract Greeter {
function greet() public constant returns (string) {
return "Hello";
}
}
```

**in dit**

```
PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x41 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND DUP1 PUSH4 0xCFAE3217 EQ PUSH2 0x46 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x52 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5B PUSH2 0xD6 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9B JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x80 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xC8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x60 PUSH1 0x40 DUP1 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x48656C6C6F000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP SWAP1 POP SWAP1 JUMP STOP LOG1 PUSH6 0x627A7A723058 KECCAK256 SLT 0xec 0xe 0xf5 0xf8 SLT 0xc7 0x2d STATICCALL ADDRESS SHR 0xdb COINBASE 0xb1 BALANCE 0xe8 0xf8 DUP14 0xda 0xad DUP13 LOG1 0x4c 0xb4 0x26 0xc2 DELEGATECALL PUSH7 0x8994D3E002900
```

Dit worden **opcodes** genoemd. EVM-opcodes zijn de instructies op laag niveau die de Ethereum Virtual Machine (EVM) kan uitvoeren. Elke opcode vertegenwoordigt een specifieke handeling, zoals rekenkundige bewerkingen, logische bewerkingen, gegevensmanipulatie, besturingsstroom, enzovoort.

[Meer over opcodes](/developers/docs/evm/opcodes/)

## Webapplicaties {#web-applications}

De compiler produceert ook de **Application Binary Interface (ABI)** die u nodig hebt om uw applicatie het contract te laten begrijpen en de functies van het contract te laten oproepen.

De ABI is een JSON-bestand dat het ingezette contract en zijn smart contract-functies beschrijft. Dit helpt de kloof tussen web2 en web3 te overbruggen

Een [JavaScript clientbibliotheek](/developers/docs/apis/javascript/) leest de **ABI**, zodat u uw smart contract kunt oproepen in de interface van uw webapp.

Hieronder staat de ABI voor het ERC-20-tokencontract. Een ERC-20 is een token dat u kunt verhandelen op Ethereum.

```json
[
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_spender",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_from",
"type": "address"
},
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "balance",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_to",
"type": "address"
},
{
"name": "_value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_owner",
"type": "address"
},
{
"name": "_spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"payable": true,
"stateMutability": "payable",
"type": "fallback"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
}
]
```

## Verder lezen {#further-reading}

- [ABI spec](https://solidity.readthedocs.io/en/v0.7.0/abi-spec.html) _– Solidity_

## Verwante onderwerpen {#related-topics}

- [JavaScript-clientbibliotheken](/developers/docs/apis/javascript/)
- [Ethereum virtual machine](/developers/docs/evm/)
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
---
title: Smart contracts implementeren
description:
lang: nl
---

U moet uw smart contract inzetten om het beschikbaar te maken voor gebruikers van een Ethereum-netwerk.

Om een smart contract te implementeren, stuurt u gewoon een Ethereum-transactie die de gecompileerde code van het smart contract bevat zonder een ontvanger aan te geven.

## Vereisten {#prerequisites}

U moet [Ethereum-netwerken](/developers/docs/networks/), [transacties](/developers/docs/transactions/) en de [anatomie van smart contracts](/developers/docs/smart-contracts/anatomy/) begrijpen voordat u smart contracts inzet.

Het inzetten van een contract kost ook ether (ETH) omdat ze worden opgeslagen op de blockchain, dus u moet bekend zijn met [gas en kosten](/developers/docs/gas/) op Ethereum.

Ten slotte moet u uw contract compileren voordat u het inzet, dus zorg ervoor dat u zich heeft ingelezen over het [compileren van smart contracts](/developers/docs/smart-contracts/compiling/).

## Hoe een smart contract inzetten {#how-to-deploy-a-smart-contract}

### Wat je nodig hebt {#what-youll-need}

- De bytecode van uw contract: deze wordt gegenereerd door [compilatie](/developers/docs/smart-contracts/compiling/)
- ETH voor gas: u stelt uw gaslimiet in zoals bij andere transacties, dus wees u ervan bewust dat voor het inzetten van contracten veel meer gas nodig is dan voor een eenvoudige ETH-overdracht
- een inzettingsscript of plugin
- toegang tot een [Ethereum-node](/developers/docs/nodes-and-clients/), ofwel door uw eigen node uit te voeren, of verbinding te maken met een publieke node, of via een API-sleutel met behulp van een [node-service](/developers/docs/nodes-and-clients/nodes-as-a-service/)

### Stappen om een smart contract in te zetten {#steps-to-deploy}

De specifieke stappen zijn afhankelijk van het ontwikkelingskader in kwestie. U kunt bijvoorbeeld [Hardhat's documentatie over het inzetten van uw contracten](https://hardhat.org/guides/deploying.html) of [Foundry's documentatie over het inzetten en verifiëren van een smart contract bekijken](https://book.getfoundry.sh/forge/deploying). Eens ingezet, zal uw contract een Ethereum-adres hebben zoals andere [accounts](/developers/docs/accounts/) en kan het geverifieerd worden met [verificatietools voor de broncode](/developers/docs/smart-contracts/verifying/#source-code-verification-tools).

## Gerelateerde tools {#related-tools}

**Remix - _Met Remix IDE kunnen smart contracts voor Ethereum-achtige blockchains worden ontwikkeld, ingezet en beheerd_**

- [Remix](https://remix.ethereum.org)

**Tenderly - _Web3-ontwikkelingsplatform dat debugging, observeerbaarheid en infrastructuurbouwstenen biedt voor het ontwikkelen, testen, monitoren en beheren van smart contracts_**

- [tenderly.co](https://tenderly.co/)
- [Documentatie](https://docs.tenderly.co/)
- [Github](https://github.com/Tenderly)
- [Discord](https://discord.gg/eCWjuvt)

**Hardhat - _Een ontwikkelomgeving om uw Ethereum-software te compileren, in te zetten, te testen en te debuggen_**

- [hardhat.org](https://hardhat.org/getting-started/)
- [Documentatie over het inzetten van uw contracten](https://hardhat.org/guides/deploying.html)
- [Github](https://github.com/nomiclabs/hardhat)
- [Discord](https://discord.com/invite/TETZs2KK4k)

**thirdweb - _Zet een contract eenvoudig in op elke EVM-compatibele chain, met één commando_**

- [Documentatie](https://portal.thirdweb.com/deploy/)

**Crossmint - _Ontwikkelplatform voor web3 op bedrijfsniveau om smart contracts te implementeren, creditcard- en cross chain-betalingen mogelijk te maken en API's te gebruiken voor het maken, verspreiden, verkopen, opslaan en bewerken van NFT._**

- [crossmint.com](https://www.crossmint.com)
- [Documentatie](https://docs.crossmint.com)
- [Discord](https://discord.com/invite/crossmint)
- [Blog](https://blog.crossmint.com)

## Gerelateerde tutorials {#related-tutorials}

- [Uw eerste smart contract inzetten](/developers/tutorials/deploying-your-first-smart-contract/) _– Een inleiding tot het inzetten van uw eerste smart contract op een Ethereum-testnetwerk._
- [Hello World | smart contract tutorial](/developers/tutorials/hello-world-smart-contract/) _– Een gemakkelijk te volgen tutorial voor het maken en implementeren van een standaard smart contract op Ethereum._
- [Interactie met andere contracten van Solidity](/developers/tutorials/interact-with-other-contracts-from-solidity/) _- Hoe een smart contract van een bestaand contract inzetten en er interactie mee hebben._
- [Hoe de omvang van uw contract beperken](/developers/tutorials/downsizing-contracts-to-fight-the-contract-size-limit/) _- Hoe u de omvang van uw contract kunt beperken om onder de limiet te blijven en gas te besparen_

## Verder lezen {#further-reading}

- [https://docs.openzeppelin.com/learn/deploying-and-interacting](https://docs.openzeppelin.com/learn/deploying-and-interacting) - _OpenZeppelin_
- [Deploying your contracts with Hardhat](https://hardhat.org/guides/deploying.html) - _Nomic Labs_

_Weet je van een community resource die je heeft geholpen? Bewerk deze pagina en voeg het toe!_

## Verwante onderwerpen {#related-topics}

- [Ontwikkelingskaders](/developers/docs/frameworks/)
- [Draai een Ethereum-node](/developers/docs/nodes-and-clients/run-a-node/)
- [Nodes-as-a-service](/developers/docs/nodes-and-clients/nodes-as-a-service)
Loading

0 comments on commit c8d0b17

Please sign in to comment.