以太坊智能合约实战 —— FanOne彩票网
这个项目是以前在网上学区块链的时候写的,现在才写出来做点笔记。 区块链小白一枚,也欢迎大家一起学习进步~
业务逻辑分析
-
remix
编写智能合约- 函数:智能合约接收投注的以太币(
payable
) - 状态变量:账户的保存(数组:[{0x00:1231242}, {0x01:1231242}, {0x00:1231243}])
- 函数:查询账户信息(需要接收
账户地址
,余额
,投注信息
) - 函数:开奖 (点击开奖按钮,随机生成中奖号码)
- 中奖号码状态变量: 存储中奖号码
- 中奖用户状态变量:存储中奖用户
- 函数:智能合约接收投注的以太币(
-
go-web
对接智能合约,渲染数据到前端-
操作智能合约
- 把投注人和对应的投注信息传到智能合约
- 查询投注人的投注信息(投注的号码)
- 查询指定账户的信息(余额)
- 开奖:(查询开奖结果)
-
渲染数据到前端
- 投注账户实现渲染到前端(长连接)
- 渲染投注信息
- 渲染余额信息
-
-
前端渲染
- 接收账户地址、账户交易密码,进行转账到智能合约
- 渲染信息
- 固定的智能合约代码
lotteryWeb/
├── conf
├── controller
├── eth
│ ├── lottert——data
├── routers
├── sol
├── status
├── utils
└── views
conf:配置文件
controller: 编写业务逻辑
eth/lottery_data: 存放智能合约用户的信息等
eth: 编写与智能合约交互的接口
routers: 存放路由
sol : 存放合约
status : 存放静态文件
utils : 存放一些功能模块
views : 前端页面
大体效果展示
生成智能合约对应的go文件
abigen --abi lottery.abi --pkg eth --type Lottery --out lottery.go
启动私链
geth --datadir "lottery_data" --identidy "fanone_lottery" --rpc --rpcport 8545 --rpcapi "eth,personal,web3,net,db" --rpccorsdomain "*" console
部署合约
要通过挖矿来确定是否部署成功
这里出现这些信息就是成功了的
下载依赖
go mod tidy
运行即可
go run main.go
这个项目是以前在网上学区块链的时候写的,现在才写出来做点笔记。 区块链小白一枚,也欢迎大家一起学习进步~
如果你喜欢的话,可以在右上角点一个star
噢~
感谢阅读~