以太坊通用积分系统案例研究
1. 智能合约设计
1.1 合约语言选择
以太坊智能合约可以使用多种语言编写,如 Solidity、Serpent 和 LLL。目前,官方推荐使用 Solidity 语言。
1.2 合约设计方案
一般有两种智能合约设计方案:
- 方案一:项目中的一个实体对应一个合约,因此项目中可能有多个合约。例如,为客户实体、商家实体和银行实体分别设计三个合约,这种方式更符合面向对象的思维。
- 方案二:只开发一个合约,利用结构体和映射存储不同的对象。相对而言,第二种方案更易于理解、测试,且便于后续的扩展和维护,因此本案例采用第二种方案。
1.3 工具合约
由于合约与前端页面不断交互,涉及一些数据类型转换,前端通常传入字符串类型,而合约更多采用 Bytes32 类型。因此,合约需要处理字符串和 Bytes32 之间的转换。我们建立一个工具类合约,后续的工具方法可以直接添加到该合约中,实际的主合约继承该工具类合约:
pragma solidity >=0.4.22 <0.6.0;
contract Utils {
function stringToBytes32(string memory source) internal pure
returns (bytes32 result) {
assembly {
result := mload(add(source, 32))
}
}
func
以太坊积分系统设计与实现
超级会员免费看
订阅专栏 解锁全文
38

被折叠的 条评论
为什么被折叠?



