如何在Polymath ST 20生态体系里搭建模块?

ZT研究院林林七
ZT研究院林林七 得得号

Nov 06, 2018 毕业于哥伦比亚大学,国际金融与经济政策专业

摘要: 这篇文章,将为您介绍如何在Polymath ST-20生态系统的中添加模块,供Polymath ST-20模块生产出证券化通证发行(STO)。

这篇文章,我将为您介绍如何在Polymath ST-20生态系统的中添加模块,供Polymath ST-20模块生产出证券化通证发行(STO)。

 

 

Polymath平台上的证券化通证在构建时考虑了模块化,可扩展性和灵活性。

ST-20标准实现了让开发人员将新类型的证券化通证功能构建为模块,这些模块可以由该通证的发行者动态附加到证券化通证。

模块可以代表任何类型的证券化通证功能,但是有一些关键类型的模块具有对证券化通证的特殊访问权限。

模块类型

目前我们定义了三种特殊的模块类型,如下所示,我们现在正在努力添加一个额外的Staking模块。

模块不必属于这些类别之一,但如果它们所代表的功能对应于这些类别之一,则它们应实现与该类别相关联的附加接口。 

TransferManager

TransferManager模块用于确定通证间的传输是否有效。

它们由证券化通证的verifyTransfer函数使用,而verifyTransfer函数又由通证的transfer和transferFrom函数使用。

实现的相应接口是:

ITransferManager.sol

(https://github.com/PolymathNetwork/polymath-core/blob/master/contracts/modules/TransferManager/ITransferManager.sol)

PermissionManager

PermissionManager模块用于管理模块和证券化通证之间的权限。它们为发行者提供了一种灵活的方式,可以将某些类型的通证权限委派给个人或模块。

实现的相应接口是:

IPermissionManager.sol

(https://github.com/PolymathNetwork/polymath-core/blob/master/contracts/modules/PermissionManager/IPermissionManager.sol)

STO

STO(证券化通证产品)模块用于筹集资金,或者更常见的是薄荷和燃烧证券化通证。它们由底层通证的铸币和刻录功能使用。

实现的相应接口是:

ISTO.sol

(https://github.com/PolymathNetwork/polymath-core/blob/master/contracts/modules/STO/ISTO.sol) 

开发新模块

在本文中,我们将使用以下示例 - 我们想要创建一个STO模块(因为它将是铸币通证),允许发行人轻松初始化售前通证分配。

预售参与者的代币只能在固定日期(通常于公开STO)之前创建。

以下代码片段可能会有缩减,以使其核心功能呈现更加清晰。

所有这些合同都在我们的公开GitHub资料库中以完整的形式出现,包括该模块的测试用例。

商业逻辑

我们首先看一下模块合同,它将包含我们的业务逻辑(允许发行人记录售前代币分配的逻辑)。 允许发行人创建预售通证分配的基本逻辑看起来是这样的:

接口和初始化

为了使其可存在Polymath生态系统里,我们需要添加一些样板代码并从模块接口继承。

由于该模块需要薄荷标记,因此它是特殊模块类型STO。因此它必须从ISTO接口继承,而ISTO接口继承自IModule。

IModule接口定义了一些在所有模块中通用的功能,具体来说:

 ISTO模块继承自IModule,并定义了STO类型模块使用的一些附加功能:

即使预售分配不涉及任何资金转移,为了透明起见,我们将记录预售通证分配中涉及的ETH或POLY的数量。

那么,让我们将它们添加到我们的PreSale模块合同中!

模块初始化

正如我们将在下一节中看到的,所有模块都是通过工厂合同创建的。

工厂合同负责创建和配置其所有模块。

为了让工厂配置其模块,IModule接口定义了`getInitFunction`,它返回用于设置模块所有初始状态的函数的签名 - 在这种情况下,只是可以创建预售分配的时间(即STO的开始)。

初始化函数可以是任意复杂的,但是这里我们有一个简单的`configure`函数,它只设置这个`endTime`值。

模块工厂

每个模块工厂都需要实现IModuleFactory接口。

这定义了一些控制模块成本的关键函数(发行者为了使用模块需要支付的POLY数量)以及为模块提供人类可读的指令和描述。

IModuleFactory接口如下所示:

那么 - 让我们创建PreSaleSTOFactory合同,去实现这些功能:

注册模块

一旦您创建了新模块,剩下的就是将其添加到Polymath生态系统中。

为此,您需要部署工厂合同(PreSaleSTOFactory),然后调用: 

 

(作者:区块链小马哥,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)

(作者:区块链小马哥,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 ZT研究院林林七 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信