| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> 首届Starcoin & Move黑客松源码分析——MyLegacy -> 正文阅读 |
|
[区块链]首届Starcoin & Move黑客松源码分析——MyLegacy |
* 本文由Starcoin社区原创,点击查看原文 MyLegacy是一个构建在Starcoin公链上的Asset-Management项目,实现了资产的安全存储、分批线性解锁等能力。整个业务模型除了财产继承,其实在很多其他常见的场景都很适合,例如分期结算项目资金、支付季度奖或者年终奖等等。尤其是在缺乏信任支撑的分布式场景,通过链上公开透明地逐步分期支付或者结算,是一个非常具有想象力的方向。 这里我们通过对合约源码进行分析,来学习一下如何使用Move安全地实现资产的管理。我们先来看一下MyLegacy项目的整体设计图: 从上图可以看出,整个合约有 2 个核心的Struct:
以及 2 个关键的function:
Struct定义接下来,我们分析一下MyLegacy的核心数据结构。
先看一下这个Legacy的struct,有key和store的ability,那意味着,Legacy只能索引和存储,不能被drop和copy。 2. Payment款项
上面提到的这些安全特性,并不需要开发者特别注意,Move帮助开发者自动处理了。
Legacy和Payment这么设计有很多安全方面的好处: Payment的struct跟Legacy一样,也只能索引和存储,不能被drop和copy。 Function定义
上面是init_legacy函数的签名,这个函数根据参数初始化Legacy信息,Legacy会作为资源存储安全地在当前用户的账号下。有几个地方说明一下:
2. redeem函数
以上是redeem函数的签名,这个函数用于赎回Payment。这里简单说明一下:
思考合约本身不复杂,但是覆盖的场景很多。 我们从合约的角度来分析一下优缺点。
2. 合约可以进一步优化的地方:
总结MyLegacy是Starcoin公链上的一个安全可靠的Asset-Management项目,虽然叫MyLegacy,但是可以想象的场景很广泛,比如分期结算项目资金等等。 合约总共100多行,既实现了复杂业务逻辑,又有了很好的安全性,这里查看完整代码。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 19:47:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |