区块链应用案例:SecureVote与originChain剖析
1. SecureVote的技术细节与优化
1.1 委托查询功能
SecureVote实现了委托查询功能,允许轻松遍历所有已知代币。其 findPossibleDelegatorsOf 函数用于查找特定地址的所有委托,通过遍历所有已知委托并构建匹配委托的内存数组来实现。不过,该函数返回的只是潜在委托者,在计算选票结果时,需单独检查委托的有效性。这体现了链上和链下工作的权衡:若将反向链接与委托一起存储,合约需额外的数据结构和逻辑来维护其准确性,增加选民成本;而当前方法意味着该函数不能被其他智能合约调用,计算仅在响应调用的以太坊节点上进行。
1.2 复杂合约升级
1.2.1 升级指针模式
对于单个合约,上述方法可能适用,但对于复杂的合约系统升级则不支持。SecureVote采用的“升级指针”模式适用于单链合约,如以下代码所示:
contract Upgradable {
address public _upgradePtr;
}
contract Index is Upgradable {
function doUpgrade(address next) external {
require(msg.sender == owner);
_upgradePtr = next;
}
}
contract AContract {
Index index;
function check
超级会员免费看
订阅专栏 解锁全文

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



