Smart Contract Factory - A Step-By-Step Tutorial


This tutorial will cover the following:



Installing & Setting Up MetaMask


To begin using the Smart Contract Factory, the first step is to install the MetaMask extension which is supported by the following browsers:

  • Chrome
  • Firefox
  • Opera
  • Brave

Once MetaMask is installed, one would need to load it with some Ether. However, since this the application is not live, an account with test Ether has been provided. To use it, click on MetaMask and select the 'Import using account seed phrase' link and enter the following twelve word phrase to import the account: ethics pact when venture crew wall collect real venue during layer shuffle.

Once the account is imported, the next step is to connect to the Ropsten test network as it is there where the smart contracts are deployed. In order to do so, go back to MetaMask and at the top there will be a dropdown menu for network selection (it should be connected to the Main Ethereum Network by default) and select Ropsten Test Network.

Deploying A Custom ERC20 Token


To deploy an ERC20 token, head back to the default landing page of the Smart Contract Factory and fill in the token details as shown in the image below (you can enter any details you like) and then hit the 'DEPLOY' button, at which point you will be prompted to sign the transaction with MetaMask.

Once the transaction has been signed on MetaMask, it will be broadcast to the miners of the network for processing. This can sometimes take a few minutes, but in most cases it should take around 30 seconds as the application automatically sets a gas price of 50 Gwei, which is very high. Having said that, it is possible to view the transaction's status by clicking on the link provided in the popup window, which appears when the transaction has been signed as shown in the image below.

When the transaction is processed and the token contract is deployed, another popup window will appear with the new smart contract's address. It is important to save the address as it will be required for interaction with the token, and also for the deployment of ICO and Airdrop contracts.

It is also possible to view the token on etherscan which is an Ethereum blockchain explorer. To do so, head over to ropsten.etherscan.io and enter the contract address in the search bar.


Interacting With The New ERC20 Token


At this point a new custom ERC20 token has been created and now we will look at how to use its functions. In order to do so, click the 'INTERACT WITH EXISTING ERC20 TOKEN' button and then enter the contract address in the 'TOKEN ADDRESS' input field.

As can be seen in the above image, there are five functions of the token contract that can be invoked. Below is a description of each function.

TRANSFER - Used for transferring tokens to other wallet addresses. The function takes two arguments being: (a) the ETH address of the recipient, and (b) the total amount of tokens to transfer.

Upon submission of the token transfer, a popup window will appear once again with the link to the transaction on etherscan. This will occur with every function invocation on the Smart Contract Factory.

APPROVE - Enables token holders to approve others (can be individuals or other smart contracts) to spend up to a specified amount of tokens on behalf of the token holder. The function takes the following arguments: (a) the ETH address which is being approved to spend tokens (i.e. the spender address), and (b) the total amount of tokens to allow the spender to spend.

TRANSFER FROM - Allows those who have been approved by others to spend tokens on their behalf to transfer up to the allowed amount of tokens from the accounts of the token holders (or owners). This function takes in three arguments: (a) the ETH wallet address of the token holder, (b) the address to transfer the tokens to, and (c) the amount of tokens to transfer.

MINT - Allows the owner and only the owner of the ERC20 token contract to mint new tokens into circulation and thus increasing the total supply. This function takes the following arguments: (a) the recipient address which will receive the newly minted tokens, and (b) the total amount of tokens to mint.

It is worth noting that this function can only ever be executed successfully if the token was marked as a mintable during the deployment of the token.

BURN - Allows the owner and only the owner of the ERC20 token contract to burn tokens from the owner's personal balance and thus decreasing the total supply. The function only accepts one argument and that is the total amount of tokens to burn.

Once again, like the 'MINT' function, this function will only work if the token was declared as a burnable one during deployment of the token.


Deploying An Airdrop Contract


Now it is time to deploy a new airdrop contract which will be used to distribute tokens to multiple recipients in large batches. In order to do so, click on the AIRDROP button in the side menu and enter the contract address of the ERC20 token, as shown in the image below.

The reason why the ERC20 token contract address is needed is because the airdrop smart contract will need to know which token it will be distributing.

Much like with the deployment of the ERC20 token, once the airdrop smart contract is deployed, a popup window will appear with the address of the new airdrop contract. The address will be needed for interaction with the contract instance.


Interacting With The New Airdrop Contract


To interact with the newly deployed airdrop smart contract, click on the 'INTERACT WITH EXISTING AIRDROP CONTRACT' button and you will be presented with the display in the image below, at which point you will need to enter the contract address of the airdrop smart contract.

As can be seen in the image above, there are three functions which can be invoked. Below is a description of each.

DEPOSIT - Allows users to deposit the ERC20 token which will be distributed by the airdrop into the airdrop's smart contract address. This step is essential because without any tokens in the airdrop contract, it will not be able to distribute any. Having said that, this function only takes one argument and that is the total amount of tokens to deposit.

Once the deposit has been processed by the network, the total amount of tokens deposited will be added to the 'TOKEN SUPPLY OF AIRDROP CONTRACT' value.

WITHDRAW - Allows the owner and only the owner of the airdrop smart contract to withdraw any tokens in the airdrop smart contract at any time. The function takes the following two arguments: (a) an address which will receive the withdrawn tokens, and (b) the total amount of tokens to withdraw.

AIRDROP - Allows the owner and only the owner of the airdrop smart contract to perform a transfer of tokens with multiple recipients in batches. This function takes two arguments which are: (a) an array of recipient addresses, and (b) the total amount of tokens to send to each address.

The second argument can be passed in two different ways. The first way is with just a single number which will represent the total amount of tokens which all addresses will receive. The other way to do it allows for each address to receive a different amount of tokens based on the respective ordering of the corresponding values and the positions of the addresses. For example, if the addresses 0x1, 0x2 and 0x3 were used and the following values 1, 2 and 3, then 0x1 would get 1 token, 0x2 would get 2 tokens and 0x3 would get 3 tokens.

To try this copy the addresses and values listed below.

350 ADDRESSES & VALUES

0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x74ed29436721c6ff66892fac500810e8e94aa810
0x19abaf8552ac6139d27fd25755bea9ba71c141c1
0x298f6e4e3ac51b7e33fcdac43779b9fb9554473e
0x5dd61ac747888b371919d97a638e038acabc7465
0x7b998a3bec90432379fa56ba161d3555b9efbcec
0x6b94c4e83ec63c6408106c03244e63423b5eb380
0x3c90280dd481849933b5f7c69d4b91fefaf8fe4c
0x1d0a01526619f6dacaf4035d8071d45a0c9bf433
0xbeb3aeb81fed47bda4e64f1c67f3d0cd3b1b0379
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x74ed29436721c6ff66892fac500810e8e94aa810
0x19abaf8552ac6139d27fd25755bea9ba71c141c1
0x298f6e4e3ac51b7e33fcdac43779b9fb9554473e
0x5dd61ac747888b371919d97a638e038acabc7465
0x7b998a3bec90432379fa56ba161d3555b9efbcec
0x6b94c4e83ec63c6408106c03244e63423b5eb380
0x3c90280dd481849933b5f7c69d4b91fefaf8fe4c
0x1d0a01526619f6dacaf4035d8071d45a0c9bf433
0xbeb3aeb81fed47bda4e64f1c67f3d0cd3b1b0379
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x74ed29436721c6ff66892fac500810e8e94aa810
0x19abaf8552ac6139d27fd25755bea9ba71c141c1
0x298f6e4e3ac51b7e33fcdac43779b9fb9554473e
0x5dd61ac747888b371919d97a638e038acabc7465
0x7b998a3bec90432379fa56ba161d3555b9efbcec
0x6b94c4e83ec63c6408106c03244e63423b5eb380
0x3c90280dd481849933b5f7c69d4b91fefaf8fe4c
0x1d0a01526619f6dacaf4035d8071d45a0c9bf433
0xbeb3aeb81fed47bda4e64f1c67f3d0cd3b1b0379
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x74ed29436721c6ff66892fac500810e8e94aa810
0x19abaf8552ac6139d27fd25755bea9ba71c141c1
0x298f6e4e3ac51b7e33fcdac43779b9fb9554473e
0x5dd61ac747888b371919d97a638e038acabc7465
0x7b998a3bec90432379fa56ba161d3555b9efbcec
0x6b94c4e83ec63c6408106c03244e63423b5eb380
0x3c90280dd481849933b5f7c69d4b91fefaf8fe4c
0x1d0a01526619f6dacaf4035d8071d45a0c9bf433
0xbeb3aeb81fed47bda4e64f1c67f3d0cd3b1b0379
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x74ed29436721c6ff66892fac500810e8e94aa810
0x19abaf8552ac6139d27fd25755bea9ba71c141c1
0x298f6e4e3ac51b7e33fcdac43779b9fb9554473e
0x5dd61ac747888b371919d97a638e038acabc7465
0x7b998a3bec90432379fa56ba161d3555b9efbcec
0x6b94c4e83ec63c6408106c03244e63423b5eb380
0x3c90280dd481849933b5f7c69d4b91fefaf8fe4c
0x1d0a01526619f6dacaf4035d8071d45a0c9bf433
0xbeb3aeb81fed47bda4e64f1c67f3d0cd3b1b0379
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x74ed29436721c6ff66892fac500810e8e94aa810
0x19abaf8552ac6139d27fd25755bea9ba71c141c1
0x298f6e4e3ac51b7e33fcdac43779b9fb9554473e
0x5dd61ac747888b371919d97a638e038acabc7465
0x7b998a3bec90432379fa56ba161d3555b9efbcec
0x6b94c4e83ec63c6408106c03244e63423b5eb380
0x3c90280dd481849933b5f7c69d4b91fefaf8fe4c
0x1d0a01526619f6dacaf4035d8071d45a0c9bf433
0xbeb3aeb81fed47bda4e64f1c67f3d0cd3b1b0379
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x74ed29436721c6ff66892fac500810e8e94aa810
0x19abaf8552ac6139d27fd25755bea9ba71c141c1
0x298f6e4e3ac51b7e33fcdac43779b9fb9554473e
0x5dd61ac747888b371919d97a638e038acabc7465
0x7b998a3bec90432379fa56ba161d3555b9efbcec
0x6b94c4e83ec63c6408106c03244e63423b5eb380
0x3c90280dd481849933b5f7c69d4b91fefaf8fe4c
0x1d0a01526619f6dacaf4035d8071d45a0c9bf433
0xbeb3aeb81fed47bda4e64f1c67f3d0cd3b1b0379
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x74ed29436721c6ff66892fac500810e8e94aa810
0x19abaf8552ac6139d27fd25755bea9ba71c141c1
0x298f6e4e3ac51b7e33fcdac43779b9fb9554473e
0x5dd61ac747888b371919d97a638e038acabc7465
0x7b998a3bec90432379fa56ba161d3555b9efbcec
0x6b94c4e83ec63c6408106c03244e63423b5eb380
0x3c90280dd481849933b5f7c69d4b91fefaf8fe4c
0x1d0a01526619f6dacaf4035d8071d45a0c9bf433
0xbeb3aeb81fed47bda4e64f1c67f3d0cd3b1b0379
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x74ed29436721c6ff66892fac500810e8e94aa810
0x19abaf8552ac6139d27fd25755bea9ba71c141c1
0x298f6e4e3ac51b7e33fcdac43779b9fb9554473e
0x5dd61ac747888b371919d97a638e038acabc7465
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x74ed29436721c6ff66892fac500810e8e94aa810
0x19abaf8552ac6139d27fd25755bea9ba71c141c1
0x298f6e4e3ac51b7e33fcdac43779b9fb9554473e
0x5dd61ac747888b371919d97a638e038acabc7465
0x7b998a3bec90432379fa56ba161d3555b9efbcec
0x6b94c4e83ec63c6408106c03244e63423b5eb380
0x3c90280dd481849933b5f7c69d4b91fefaf8fe4c
0x1d0a01526619f6dacaf4035d8071d45a0c9bf433
0xbeb3aeb81fed47bda4e64f1c67f3d0cd3b1b0379
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x74ed29436721c6ff66892fac500810e8e94aa810
0x19abaf8552ac6139d27fd25755bea9ba71c141c1
0x298f6e4e3ac51b7e33fcdac43779b9fb9554473e
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x74ed29436721c6ff66892fac500810e8e94aa810
0x19abaf8552ac6139d27fd25755bea9ba71c141c1
0x298f6e4e3ac51b7e33fcdac43779b9fb9554473e
0x5dd61ac747888b371919d97a638e038acabc7465
0x7b998a3bec90432379fa56ba161d3555b9efbcec
0x6b94c4e83ec63c6408106c03244e63423b5eb380
0x3c90280dd481849933b5f7c69d4b91fefaf8fe4c
0x1d0a01526619f6dacaf4035d8071d45a0c9bf433
0xbeb3aeb81fed47bda4e64f1c67f3d0cd3b1b0379
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x74ed29436721c6ff66892fac500810e8e94aa810
0x19abaf8552ac6139d27fd25755bea9ba71c141c1
0x298f6e4e3ac51b7e33fcdac43779b9fb9554473e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
If you did make the airdrop with the above entries, you will have been presented with a link to the transaction on etherscan showing the status of the transaction. If it is still pending, just wait for it to get approved and you will most likely see something very similar to what is shown in the screenshot below which was taken from the following transaction.

It may seem odd that 350 addresses and values have been provided, but this was done with the intention to demonstrate a major limitation of the Ethereum blockchain. This is because 350 token transfers is very close to the upper bound gas limit of the network (well, at least that of the Ropsten network) for a single transaction. In other words, given a "large" enough input to the airdrop function shown below which has an aymptotic time complexity of just O(n), the transaction will fail with quite a small input.

To put this to the test, one could attempt a batch transfer of tokens with 450 recipients and values. In such a scenario, the transaction will most likely fail. If you want to try, 450 addresses and values have been provided below.

450 ADDRESSES & VALUES

0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
0x56b98a9c1c5572fbcc3b2339fa66e5b0876e0d37
0x66d00c68415db9aa28a04c2326a37867884b2ab7
0x277bc251b3ba0cd38671ac8821d1d9b2616522e7
0xd1d4ccd982eb1a98710b62ef2c360113748cd5bc
0x67571f9ebab025986aa6c03e616315830fdc0d16
0x0323cf9dfe6f8874d3dc49355b3b5c5a250d6036
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x7b961b8259d885fae49dfa5d5bc1acd5fcd42f79
0xaa8a3cb2f732423befaf6d3e0ba0755d997faa77
0x3cb642f68b1e1b5cf7cf33b5cae9c52083f6f940
0x3747832b30ec9341f70bd9797a067d5ba746f27f
0xebb023e3391ad08ce70cc22830bba9dbb9d3504f
0x642f64413a5afebfe8710bedf832df8ddb33dac1
0x9c224ba5f30e8591a2c2601ecbcac7db8e9ee510
0x9c0c094f8b79eb652fc69022f453cd89c631dca5
0x66a9b151ff96128248e376b2ee1c632a7d4da1c4
0xf653113e4b91aecca73d65e9745cab25bf7b9251
0x1f069b10ed93a29cc481ce0cd828b0ec6a880ad9
0x1084c76e515b28a07ce622c0336018aac46f14d9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
If you did attempt the above test, you will have most probably seen the following error message on your MetaMask shown in the image below.

This is a pretty good indication that the transaction will fail and that it should not be signed, otherwise all gas fees will still be consumed. This is shown in the image below.


Deploying An ICO Contract


Now it is tiime to deploy an ICO contract which will be used for the sale of the University of Sussex Coin, though any ERC20 token will do. Once again, to do this the contract address of ERC20 token will be needed in order for the ICO contract to know which token it is selling. Additionally, a soft cap (i.e. the minimum funding goal in ETH) must be entered, along with the exchange rate at which the token will be sold, such as 1 ETH = 10,000 USC tokens, and finally the duration in days must be specified (in other words how long the ICO will be active for from the moment it is deployed).

Once the contract is deployed, you will again be presented with a notification in a popup window with the address of the new ICO contract, as shown below. Save this so you can interact with the ICO contract's functions.


Interacting With The New ICO Contract


To interact with the new ICO smart contract, click on the "INTERACT WITH EXISTING ICO CONTRACT" button and you will be presented with the display in the image below. At this point the ICO contract address must be provided so the application knows which contract instance to interface with.

As can be seen in the above image, there are eight functions which can be invoked from the ICO interaction screen. Below is a description of each.

DEPOSIT - Allows users to deposit the ERC20 token which will be sold during the ICO phase. This step is essential because without any tokens in the ICO contract, the ICO will not be able to sell any. Having said that, this function only takes one argument and that is the total amount of tokens to deposit.

Once the deposit has been processed by the network, the total amount of tokens deposited will be added to the 'TOKENS REMAINING' value.

WITHDRAW - Allows the owner and only the owner of the ICO smart contract to withdraw tokens at any time. The function takes the following two arguments: (a) an address which will receive the withdrawn tokens, and (b) the total amount of tokens to withdraw.

BUY TOKENS - Allows anyone to purchase tokens directly from the ICO smart contract with ETH. This function one of two arguments. The first argument it can take is the "ETH TO SEND TO ICO" one, which once a value is entered, the total amount of coins one would get for the amount is computed and depends on the exchange rate set by the owner. For example, the exchange rate set in our example is 10,000 USC tokens for every 1 ETH and in the image below, 1.25 ETH has been entered and it displays 12,500 in the "TOKENS YOU WILL RECEIVE" field. Alternatively, once could enter the total amount of tokens they wish to purchase in "TOKENS YOU WILL RECEIVE" field and the total amount of ETH it will cost will be displayed.

One thing worth mentioning in regard to the BUY TOKENS function is that it is not actually needed. In fact it is easier to purchase tokens without it. This is because, one could simply send ETH to the ICO smart contract address and automatically receive tokens at the set exchange rate. If you would like to test this, send any amount of ETH to the following address: 0xa91189df09b9b79aeac408ebb7c04f73f4929304 with MetaMask (make sure you are connected to the Ropsten test network). Once the transaction is made, it will show up on etherscan here under the Transactions tab (it should be the topmost one). Click on the transaction and once it is confirmed you will see the total amount of tokens sent to your address, along with the total amount of ETH you sent to the ICO contract address.

WITHDRAW ETH - Allows the owner and only the owner of the ICO smart contract to withdraw ETH from the smart contract. This function will only ever succeed in the case that the funding goal has been reached prior to the deadline of the ICO. Additionally, if the ICO is cancelled at any point by the owner, the ETH will no longer be withdrawable.

SET NEW EXCHANGE RATE - Allows the owner and only the owner of the ICO smart contract to change the exchange rate at any time without restriction. The function just takes one argument and that is the new exchange rate which must be a value greater than zero.

SHORTEN DEADLINE - Allows the owner and only the owner of the ICO smart contract to shorten the deadline of the ICO contract's duration. The function takes one argument and that is the total amount of days the ICO should end in from the moment of invocation of the function. The function execution will only succeed provided that the number of days entered is less than the current number of active days remaining on the ICO contract.

GET ETH REFUND - Allows those who have invested ETH in the ICO to claim a refund in the condition that: (a) the ICO deadline has passed and the minimum funding goal has not been reached, or (b) the owner of the ICO contract has cancelled the ICO.

CANCEL ICO - Allows the owner and only the owner of the ICO smart contract to cancel the ICO, thus permanently terminating all future sales and also making all funds raised refundable to all investors.