账号模型
Authkey 的初始化问题
问题描述:第一次创建账号的时候需要 Authkey,导致转账的方法需要判断对方账号是否在链上,然后需要填充不同的参数,增加了第三方(比如交易所)的接入复杂度。
解决方案:第一次创建账号时 Authkey 留空,使用 address 作为 Authkey,虽然 address 的长度小于 Authkey,安全性比 Authkey 低,但提高了易用性,当用户第一次发起交易的时候自动更新 Authkey(当然用户可以主动发起更新 Authkey 的交易)。
合约账户问题
Move 中并没有专门的合约账户。但有一些情况,需要类似合约账号的机制。比如:提供全局注册表,并允许任何人注册。
通过提供 SignerDelegated 的机制,允许用户将自己的账号的 SignerCapability 代理给合约,合约可以通过 SignerCapability 在合约中创建出 signer 实例,模拟该用户。
合约升级
提供了用户级别的设置 ModuleUpgradeStrategy
两阶段提交升级:先提交升级计划以及代码 Hash,再执行升级交易。
DAO 治理方式升级:将 UpgradePlanCapability 托管给 DAO
DAO 链上治理
合约升级
修改链上配置
国库资金支配
Token 铸造
Token 协议
全局注册表难题: Token::name_of<T>
用户需要先初始化 Balance<T>,才能接受 Token T。
NFT
Oracle
YieldFarming
管理空间
管理内容
集成