IDO是DeFi领域一个很前沿,也很受用户欢迎的方向,旨在帮助DeFi项目募集资金。Atlaspad是一个构建在Starcoin之上的通用IDO协议,使用智能合约Move实现。
Atlaspad是首届Move黑客松中非常有意思的一个项目,由国际化的参赛团队设计完成,也是Starcoin生态中首个IDO(Initial DeFi Offering)平台。IDO是DeFi领域一个很前沿,也很受用户欢迎的方向,旨在帮助DeFi项目募集资金。Atlaspad是一个构建在Starcoin之上的通用IDO协议,使用智能合约Move实现。
这里我们通过对合约源码进行分析,来学习一下如何使用Move实现一个安全地的IDO平台。我们先来看一 下Atlaspad项目的整体设计图:
从上图我们可以得到的信息:
IDO平台业务相对复杂一些,具体的执行流程,核心函数,后面再介绍。
struct Offering<StakingTokenType: store, PaidTokenType: store, OfferingTokenType: store> has key, store {
offering_tokens: Token::Token<OfferingTokenType>,// 募资Token
offering_token_total_amount: u128,// 总量
exchange_rate: u128,// 汇率
personal_staking_token_amount_limit: u128,// 单用户限量
state: u8,// 状态
offering_addr: address,// 地址
staking_token_amount: u128,// 质押总量
offering_token_exchanged_amount: u128,// 已兑换总量
version: u128,// 版本
offering_created_event: Event::EventHandle<OfferingCreatedEvent>,// 创建Offering事件
offering_update_event: Event::EventHandle<OfferingUpdateEvent>,// 更新Offering事件
}
struct Staking<StakingTokenType: store, PaidTokenType: store, OfferingTokenType: store> has key, store {
staking_tokens: Token::Token<StakingTokenType>,// 质押Token
staking_token_amount: u128,// 质押总量
is_pay_off: bool,// 是否已经支付
version: u128,// 版本
token_staking_event: Event::EventHandle<TokenStakingEvent>,// 质押事件
token_exchange_event: Event::EventHandle<TokenExchangeEvent>,// 兑换事件
}
从Offering和Staking这么设计有很多安全方面的好处:
我们从合约的⻆度来分析一下优缺点。
Atlaspad是使用Move实现的首个IDO平台,很好的利用了Move的特性,非常得有意思,感兴趣的可以通过这里查看完整代码。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!