Unit 21: You sure can attract a crowd! – 第二十一单元:你一定能吸引一群人!区块链毕设代写

区块链毕设代写本文提供国外最新区块链项目源码下载,包括solidity,eth,fabric等blockchain区块链,Unit 21: You sure can attract a crowd! – 第二十一单元:你一定能吸引一群人!区块链毕设代写 是一篇很好的国外资料

Unit 21: You sure can attract a crowd!

Unit 21: You sure can attract a crowd! - 第二十一单元:你一定能吸引一群人! People in Concert – Photo by Josh Sorenson | Free License

Background

Your company has decided to crowdsale their PupperCoin token in order to help fund the network development. This network will be used to track dog breeding activity across the globe in a decentralized way, and allow humans to track the genetic trail of their pets. You have already worked with the necessary legal bodies and obtained the green light on creating a crowdsale open to the public. However, you are required to enable refunds if the crowdsale is successful and the goal is met, and you are only allowed to raise a maximum of 300 ether. The crowdsale will run for 24 weeks.

You will need to create an ERC20 token that will be minted through a Crowdsale contract that you can leverage from the OpenZeppelin Solidity library.

This crowdsale contract will manage the entire process, allowing users to send ETH and get back PUP (PupperCoin). This contract will mint the tokens automatically and distribute them to buyers in one transaction.

It will need to inherit Crowdsale, CappedCrowdsale, TimedCrowdsale, RefundableCrowdsale, and MintedCrowdsale.

You will conduct the crowdsale on the Kovan or Ropsten testnet in order to get a real-world pre-production test in.

Instructions

Creating your project

Using Remix, create a file called PupperCoin.sol and create a standard ERC20Mintable token. Since you’re already an expert at this, you can simply use this starter code.

Create a new contract named PupperCoinCrowdsale.sol, and prepare it like a standard crowdsale.

Designing the contracts

ERC20 PupperCoin

You will need to simply use a standard ERC20Mintable and ERC20Detailed contract, hardcoding 18 as the decimals parameter, and leaving the initial_supply parameter alone.

You don’t need to hardcode the decimals; however, since most use-cases match Ethereum’s default, you may do so.

Simply fill in the PupperCoin.sol file with this starter code, which contains the complete contract you’ll need to work with in the Crowdsale.

PupperCoinCrowdsale

Leverage the Crowdsale starter code, saving the file in Remix as Crowdsale.sol.

You will need to bootstrap the contract by inheriting the following OpenZeppelin contracts:

  • Crowdsale

  • MintedCrowdsale

  • CappedCrowdsale

  • TimedCrowdsale

  • RefundablePostDeliveryCrowdsale

You will need to provide parameters for all of the features of your crowdsale, such as the name, symbol, wallet for fundraising, goal, etc. Feel free to configure these parameters to your liking.

You can hardcode a rate of 1, to maintain parity with ether units (1 TKN per Ether, or 1 TKNbit per wei). If you’d like to customize your crowdsale rate, follow the Crowdsale Rate calculator on OpenZeppelin’s documentation. Essentially, a token (TKN) can be divided into TKNbits just like ether can be divided into wei. When using a rate of 1, just like 1000000000000000000 wei is equal to 1 ether, 1000000000000000000 TKNbits is equal to 1 TKN.

Since RefundablePostDeliveryCrowdsale inherits the RefundableCrowdsale contract, which requires a goal parameter, you must call the RefundableCrowdsale constructor from your PupperCoinCrowdsale constructor, as well as the others. RefundablePostDeliveryCrowdsale does not have its own constructor, so just use the RefundableCrowdsale constructor that it inherits.

If you forget to call the RefundableCrowdsale constructor, the RefundablePostDeliveryCrowdsale will fail since it relies on it (it inherits from RefundableCrowdsale), and does not have its own constructor.

When passing the open and close times, use now and now + 24 weeks to set the times properly from your PupperCoinCrowdsaleDeployer contract.

PupperCoinCrowdsaleDeployer

In this contract, you will model the deployment based off of the ArcadeTokenCrowdsaleDeployer you built previously. Leverage the OpenZeppelin Crowdsale Documentation for an example of a contract deploying another, as well as the starter code provided in Crowdsale.sol.

Testing the Crowdsale

Test the crowdsale by sending ether to the crowdsale from a different account (not the same account that is raising funds), then once you confirm that the crowdsale works as expected, try to add the token to MyCrypto and test a transaction. You can test the time functionality by replacing now with fakenow, and creating a setter function to modify fakenow to whatever time you want to simulate. You can also set the close time to be now + 5 minutes, or whatever timeline you’d like to test for a shorter crowdsale.

When sending ether to the contract, make sure you hit the goal that you set, and finalize the sale using the Crowdsale‘s finalize function. In order to finalize, isOpen must return false (isOpen comes from TimedCrowdsale which checks to see if the close time has passed yet). Since the goal is 300 ether, you may need to send from multiple accounts. If you run out of prefunded accounts in Ganache, you can create a new workspace.

Remember, the refund feature of RefundablePostDeliveryCrowdsale only allows for refunds once the crowdsale is closed and the goal is met. See the OpenZeppelin RefundableCrowdsale documentation for details as to why this logic is used to prevent potential attacks on your token’s value.

You can add custom tokens in MyCrypto from the Add custom token feature:

Unit 21: You sure can attract a crowd! - 第二十一单元:你一定能吸引一群人!

You can also do the same for MetaMask. Make sure to purchase higher amounts of tokens in order to see the denomination appear in your wallets as more than a few wei worth.

Deploying the Crowdsale

Deploy the crowdsale to the Kovan or Ropsten testnet, and store the deployed address for later. Switch MetaMask to your desired network, and use the Deploy tab in Remix to deploy your contracts. Take note of the total gas cost, and compare it to how costly it would be in reality. Since you are deploying to a network that you don’t have control over, faucets will not likely give out 300 test ether. You can simply reduce the goal when deploying to a testnet to a much smaller amount, like 10,000 wei.

Submission

Create a Github repo, and a README.md file explaining the process for purchasing PupperCoin (or whatever name you came up with).

Ensure that anyone can run the steps and add the token to MyCrypto, or a similar wallet.

Include information such as the token parameters, token name, crowdsale cap, etc.


© 2020 Trilogy Education Services, a 2U, Inc. brand. All Rights Reserved.

We use optional third-party analytics cookies to understand how you use GitHub.com so we can build better products. Learn more.

Uploading code and screenshots


Unit 21: You sure can attract a crowd!

Unit 21: You sure can attract a crowd! - 第二十一单元:你一定能吸引一群人! People in Concert – Photo by Josh Sorenson | Free License

Background

Your company has decided to crowdsale their PupperCoin token in order to help fund the network development. This network will be used to track dog breeding activity across the globe in a decentralized way, and allow humans to track the genetic trail of their pets. You have already worked with the necessary legal bodies and obtained the green light on creating a crowdsale open to the public. However, you are required to enable refunds if the crowdsale is successful and the goal is met, and you are only allowed to raise a maximum of 300 ether. The crowdsale will run for 24 weeks.

You will need to create an ERC20 token that will be minted through a Crowdsale contract that you can leverage from the OpenZeppelin Solidity library.

This crowdsale contract will manage the entire process, allowing users to send ETH and get back PUP (PupperCoin). This contract will mint the tokens automatically and distribute them to buyers in one transaction.

It will need to inherit Crowdsale, CappedCrowdsale, TimedCrowdsale, RefundableCrowdsale, and MintedCrowdsale.

You will conduct the crowdsale on the Kovan or Ropsten testnet in order to get a real-world pre-production test in.

Instructions

Creating your project

Using Remix, create a file called PupperCoin.sol and create a standard ERC20Mintable token. Since you’re already an expert at this, you can simply use this starter code.

Create a new contract named PupperCoinCrowdsale.sol, and prepare it like a standard crowdsale.

Designing the contracts

ERC20 PupperCoin

You will need to simply use a standard ERC20Mintable and ERC20Detailed contract, hardcoding 18 as the decimals parameter, and leaving the initial_supply parameter alone.

You don’t need to hardcode the decimals; however, since most use-cases match Ethereum’s default, you may do so.

Simply fill in the PupperCoin.sol file with this starter code, which contains the complete contract you’ll need to work with in the Crowdsale.

PupperCoinCrowdsale

Leverage the Crowdsale starter code, saving the file in Remix as Crowdsale.sol.

You will need to bootstrap the contract by inheriting the following OpenZeppelin contracts:

  • Crowdsale

  • MintedCrowdsale

  • CappedCrowdsale

  • TimedCrowdsale

  • RefundablePostDeliveryCrowdsale

You will need to provide parameters for all of the features of your crowdsale, such as the name, symbol, wallet for fundraising, goal, etc. Feel free to configure these parameters to your liking.

You can hardcode a rate of 1, to maintain parity with ether units (1 TKN per Ether, or 1 TKNbit per wei). If you’d like to customize your crowdsale rate, follow the Crowdsale Rate calculator on OpenZeppelin’s documentation. Essentially, a token (TKN) can be divided into TKNbits just like ether can be divided into wei. When using a rate of 1, just like 1000000000000000000 wei is equal to 1 ether, 1000000000000000000 TKNbits is equal to 1 TKN.

Since RefundablePostDeliveryCrowdsale inherits the RefundableCrowdsale contract, which requires a goal parameter, you must call the RefundableCrowdsale constructor from your PupperCoinCrowdsale constructor, as well as the others. RefundablePostDeliveryCrowdsale does not have its own constructor, so just use the RefundableCrowdsale constructor that it inherits.

If you forget to call the RefundableCrowdsale constructor, the RefundablePostDeliveryCrowdsale will fail since it relies on it (it inherits from RefundableCrowdsale), and does not have its own constructor.

When passing the open and close times, use now and now + 24 weeks to set the times properly from your PupperCoinCrowdsaleDeployer contract.

PupperCoinCrowdsaleDeployer

In this contract, you will model the deployment based off of the ArcadeTokenCrowdsaleDeployer you built previously. Leverage the OpenZeppelin Crowdsale Documentation for an example of a contract deploying another, as well as the starter code provided in Crowdsale.sol.

Testing the Crowdsale

Test the crowdsale by sending ether to the crowdsale from a different account (not the same account that is raising funds), then once you confirm that the crowdsale works as expected, try to add the token to MyCrypto and test a transaction. You can test the time functionality by replacing now with fakenow, and creating a setter function to modify fakenow to whatever time you want to simulate. You can also set the close time to be now + 5 minutes, or whatever timeline you’d like to test for a shorter crowdsale.

When sending ether to the contract, make sure you hit the goal that you set, and finalize the sale using the Crowdsale‘s finalize function. In order to finalize, isOpen must return false (isOpen comes from TimedCrowdsale which checks to see if the close time has passed yet). Since the goal is 300 ether, you may need to send from multiple accounts. If you run out of prefunded accounts in Ganache, you can create a new workspace.

Remember, the refund feature of RefundablePostDeliveryCrowdsale only allows for refunds once the crowdsale is closed and the goal is met. See the OpenZeppelin RefundableCrowdsale documentation for details as to why this logic is used to prevent potential attacks on your token’s value.

You can add custom tokens in MyCrypto from the Add custom token feature:

Unit 21: You sure can attract a crowd! - 第二十一单元:你一定能吸引一群人!

You can also do the same for MetaMask. Make sure to purchase higher amounts of tokens in order to see the denomination appear in your wallets as more than a few wei worth.

Deploying the Crowdsale

Deploy the crowdsale to the Kovan or Ropsten testnet, and store the deployed address for later. Switch MetaMask to your desired network, and use the Deploy tab in Remix to deploy your contracts. Take note of the total gas cost, and compare it to how costly it would be in reality. Since you are deploying to a network that you don’t have control over, faucets will not likely give out 300 test ether. You can simply reduce the goal when deploying to a testnet to a much smaller amount, like 10,000 wei.

Submission

Create a Github repo, and a README.md file explaining the process for purchasing PupperCoin (or whatever name you came up with).

Ensure that anyone can run the steps and add the token to MyCrypto, or a similar wallet.

Include information such as the token parameters, token name, crowdsale cap, etc.


© 2020 Trilogy Education Services, a 2U, Inc. brand. All Rights Reserved.

We use optional third-party analytics cookies to understand how you use GitHub.com so we can build better products. Learn more.

Uploading code and screenshots

部分转自网络,侵权联系删除区块链源码网

www.interchains.cc

https://www.interchains.cc/18533.html

区块链毕设网(www.interchains.cc)全网最靠谱的原创区块链毕设代做网站 部分资料来自网络,侵权联系删除! 最全最大的区块链源码站 !
区块链知识分享网, 以太坊dapp资源网, 区块链教程, fabric教程下载, 区块链书籍下载, 区块链资料下载, 区块链视频教程下载, 区块链基础教程, 区块链入门教程, 区块链资源 » Unit 21: You sure can attract a crowd! – 第二十一单元:你一定能吸引一群人!区块链毕设代写

提供最优质的资源集合

立即查看 了解详情