暑假开始的区块链+深度学习的小项目,关于写smart contract的阶段性记录(持续更新)
ps:清收藏夹时发现的奇异AI社区,地址失效了,现在是http://talk.strangeai.pro
(早期是将人工智能算法以平台的形式提供给普通开发者,让开发者来贡献、提交开源或者自有的算法。现在名字改成ManaAI了,开放的算法代码也下架了,遗憾)

eth文档
solidity文档

测试网络Rinkeby

Rinkeby是以太坊官方提供的测试网络,使用PoA共识机制
PoA流程

1
2
3
4
5
6
7
8
9
10
11
12
13
创世块中指定一组初始授权的signers,所有地址保存在创世区块(Genesis Block),并且把该区块的hash写到钱包里。

启动挖矿后, 该组signers开始对生成的block进行签名并广播

签名结果保存在区块头的Extra字段中

Extra中更新当前高度已授权的所有signers的地址,因为有新加入或踢出的signer

每一高度都有一个signer处于IN-TURN状态, 其他signer处于OUT-OF-TURN状态, IN-TURN的signer签名的block会立即广播, OUT-OF-TURN的signer签名的block会延时一段时间后再广播, 保证IN-TURN的签名block有更高的优先级上链

如果需要加入一个新的signer,signer通过API接口发起一个proposal, 该proposal通过复用区块头 Coinbase(新signer地址)和Nonce("0xffffffffffffffff") 字段广播给其他节点. 所有已授权的signers对该新的signer进行"加入"投票, 如果赞成票超过signers总数的50%, 表示同意加入

如果需要踢出一个旧的signer, 所有已授权的signers对该旧的signer进行"踢出"投票, 如果赞成票超过signers总数的50%, 表示同意踢出

Solidity

code
请稍等