Solidity 是用于开发以太坊智能合约的最受欢迎的语言之一,因此,作为一个想要成为区块链开发人员的人,必须学会如何使用 Solidity 开发智能合约。
一、开发环境
我们将使用的 IDE 是 Remix,在浏览器输入 Remix URL。完成后,你应该会看到一个类似以下的界面:
点击标红的solidity即可开始我们的solidity之旅啦;
详细的solidity中文文档地址:https://learnblockchain.cn/docs/solidity/
基础就慢慢参考文档看吧。
二、写一个简单的Demo(一个借助智能合约众筹的项目)
合约代码如下(比较粗糙,有很多可以优化的地方,比如重复发起,只是demo):
pragma solidity ^0.4.0; contract zhongchou{ //捐赠人 struct funder{ address fundAddress; uint toMoney; //个人捐赠金额 } //发起捐赠的人 struct needer{ address neederAddress; uint goal; //目标金额 uint amount; //已经完成金额 uint funderCount; //捐赠人数 mapping(uint => funder) fundMap; //捐赠人数映射 } //全局变量 uint neederCount; //捐赠请求总数,可以作为捐赠计划的主键 mapping(uint => needer) needMap; //捐赠计划mapping address owner; //合约部署者 constructor() public{ owner = msg.sender; //在构造函数中给合约部署者赋值 } //发起捐赠请求 //_goal:目标金额 function newNeeder(uint _goal) public{ neederCount ++; needMap[neederCount] = needer(msg.sender, _goal, 0, 0); } //用户捐赠 //_neederCount:捐赠计划主键 function contribute(uint _neederCount) public payable{ needer storage _needer = needMap[_neederCount]; _needer.amount += msg.value; _needer.funderCount ++; _needer.fundMap[_needer.funderCount] = funder(msg.sender, msg.value); } //检查是否达成目标,如果达成,就把资金转给合约发起者 //_neederCount:捐赠计划主键 function isComplete(uint _neederCount) public{ needer storage _needer = needMap[_neederCount]; if(_needer.amount > _needer.goal){ require(msg.sender == owner); //可以使用modifier前置校验 _needer.neederAddress.transfer(_needer.amount); } } }
三、部署测试:
自己测吧!^_^