学习的内容是单员工发工资和多员工发工资的代码,不能透露。我就自己编了一个应用场景,最近代投很火,几个人合伙凑出几个ETH,发给代投方,这个功能很简单,用以太坊钱包就能解决,但如果几十人参投,记账的工作量还是挺大的,用智能合约就可以完美地解决这个需求。
根据课程的内容,我照葫芦画瓢,写出了最简单的合约:
pragma solidity ^0.4.0;
contract SendEther {
address payee = 0xdd870fa1b7c4700f2bd7f44238821c26f7392148; //第5个地址
function addFund() payable returns(uint) {
return this.balance;
}
function send() {
payee.transfer(this.balance);
}
}
remix的测试框架中默认生成了5个测试地址:
我要用第一个地址创建合约,第二、三个地址分别参投2ETH和3ETH,然后汇总在一起发到第5个地址中,第5个地址就是我们的代投方地址,这里用payee表示,直接硬编码在里面了。
1)创建合约
点create后自己编译并创建完成。
2)收币
分别把Account选到第二、第三个地址,value分别用2和3,调用两次addFund()函数,这样合约账户应该收到了5ETH。
参加这个代投项目的人要调用addFund()向合约地址中打币,函数中要有payable修饰词,函数调用时传递的value值就是发送的币数量,默认单位为wei,可以在界面里设置为ether。
addFund()中返回了this.balance,这样每一次打币时能够看到合约账户里的余额。
3)发币
最后调用send()函数,内部调用了transfer()函数,一次性把所有币发给代投方。
功能很简单,刚刚开始学,不知道有没有漏洞,别人能够把里面的币偷走吗?
当前也不敢部署到正式网络中,一方面不会部署,另一方以太坊的gas太贵,出点问题,ETH就没了,真金白银可不能乱折腾。万一代投方再把ERC20代币发回来,分不给参投方,问题就更大了。
后面还要继续学习扩充功能,记录好参投方的地址、参投数量等数据,最后一次性把token分给大家,让人谈虎色变的ICO实际上就是这么一回事。
本文由币乎(bihu.com)内容支持计划奖励