欢迎光临散文网 会员登陆 & 注册

智能合约链游开发详情丨智能合约链游系统开发(开发方案)及源码分析

2023-03-02 16:34 作者:bili_16249894763  | 我要投稿

  合约分层


  WeIdentity采用分层设计模式,即将合约分为逻辑合约、数据合约、及权限合约。


  逻辑合约:它专注于数据的逻辑处理和对外提供接口,通过访问数据合约获得数据,对数据做逻辑处理,写回数据合约。一般情况下,控制器合约不需要存储任何数据,它完全依赖外部的输入来决定对数据合约的访问。


  数据合约:它专注于数据结构的定义、数据内容的存储和数据读写的直接接口。


  权限合约:它专注于判断访问者的角色,并基于判断结果确定不同操作的权限。


  当前的WeIdentity权限管理的挑战是:


  合约在链上部署之后,攻击者可能会绕过SDK直接以DApp的形式访问合约。因此合约层面必须要有自完善的权限处理逻辑,不能依赖SDK。


  数据合约是公开的,因此数据合约的操作也需要进行权限管理。


  WeIdentity的权限管理依赖于一个独立的RoleManager权限管理器合约,它承担了合约所有的权限检查逻辑。WeIdentity的权限粒度是基于角色和操作的二元组,这也是当前大多数智能合约权限控制的通用做法。开发模式I35详细7O98开发O7I8,它的设计要点包括:


  将角色和操作权限分别存储。


  设计一个权限检查函数checkPermission()供外部调用,输入参数为「地址,操作」的二元组。


  对角色和权限分别设计增删改函数供外部调用。


  所有WeIdentity的数据合约里需要进行权限检查的操作,都通过外部合约函数调用的方式,调用checkPermission()。


  所有WeIdentity依赖权限管理器的合约,需要有更新权限管理器地址的能力。


  WeIdentity的权限管理有以下特性:开发流程及源码:MrsFu123


  优秀的可扩展性。WeIdentity的权限控制合约使用外部调用而非继承(如ds-auth和OpenZepplin的Role智能合约实现角色管理方式)方式实现。在权限控制合约升级的场景中,外部调用方案只需简单地将权限管理器合约地址更新即可,极大地提升了灵活度。


  使用tx.origin而非msg.sender进行调用源追踪。这是因为用户的权限和自己的DID地址唯一绑定。因此所有权限的验证必须要以最原始用户地址作为判断标准,不能单纯地依赖msg.sender。此外,WeIdentity的权限控制合约需要支持更大的可扩展性,以支持更多公众联盟链的参与成员自行实现不同的Controller。因此,需要通过tx.origin追踪到调用者的WeIdentity DID,并根据DID确定权限。


智能合约链游开发详情丨智能合约链游系统开发(开发方案)及源码分析的评论 (共 条)

分享到微博请遵守国家法律