区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > 币安下载 > 正文

BST:区块链研究实验室 | 基于substrate创建Ink智能合约_BSTK币

作者:

时间:

Parity的Substrate区块链框架,在最终版本开发中取得不错的进展。Ink是Parity为基于Substrate的区块链编写智能合约的解决方案。

与Substrate一样,Ink建立在Rust之上,因此遵循Rust语言规则和语法。本文将介绍一个示例在智能合约中复制一个ERC721令牌,通常称为以太坊区块链上的ERC721令牌。

这是系列文章的第1部分,将介绍创建和部署此Ink智能合约的过程,具体来说,我们将介绍:

如何安装Substrate和Ink及其依赖项;

编写支持3个主要功能的简单不可替代令牌合同:创造令牌,转移令牌,以及批准另一个帐户代表发送令牌;

如何在Substrate区块链上构建和部署智能合约,并使用PolkadotJS应用程序在链上测试功能;

注意:PolkadotJS应用程序不仅设计用于管理Polkadot本身,还管理任何Substrate链。接口是动态的,因为可用的管理选项取决于Substrate链支持的功能。

在本文中,我们将介绍Ink的安装过程及其所需的依赖关系,并介绍本系列附带的ERC721令牌示例合同,讨论Ink合同的结构以及它与基于Solidity的合同的区别,以及两者之间的相似性。

非同质化令牌

非同质化令牌NFT与ERC20型令牌不同,每个令牌都是独一无二的。在我们的合同中,每个令牌都有一个用于表示令牌的唯一ID。从这里开始,每个令牌都可以拥有自己的值,自己的元数据,或者在应用程序或价值系统中具有特定用途。

F7生态集团联合创始人:区块链将开启财富数字化的黄金十年:3月28日10:18分,200多位来自全国各地的企业家、金融科技等各行业创业者出席发布会。F7生态集团正式启航,布局的科技研发、区块链教育、大健康、新媒体等多个项目现场举行了战略合作签约仪式,正有序落地。

会上,F7雷达联盟创始人、F7生态集团联合创始人阿慧老师(王淑会)表示:区块链开启财富数字化的黄金十年,区块链是产业改造和升级的工具,F7生态集团将成为推动实体经济转型升级的新力量,以科技赋能实业的战略升级,F7创建6年今开启新征程。[2021/3/31 19:33:44]

批准转移或管理令牌的非所有者帐户也是不同的,并且必须在每个令牌的基础上使用NFT完成。加密猫是最着名的例子,其中实现了非同质化令牌?-每个令牌代表平台上的小猫。

NFT对标准令牌提出了不同的挑战,因此我们可以根据Ink语法和功能进行更多探讨。让我们下一步安装Substrate,Ink和所需的软件包来编写我们的智能合约。

系统安装

开始编写Ink合约需要一些依赖包。安装后,我们可以在终端窗口-中运行一个Substrate链,我们将使用此链作为部署智能合约的方法。

rust

Substrate和Ink依赖于rust。使用以下命令安装Rust。下面还包含两个命令,以确保您的NightlyRust版本是最新的,以及Webassembly构建对NightlyRust的支持:Ink合同编译为.wasm文件,因此作为Webassembly部署到Substrate链。

ETC前业务开发经理:ETC将在未来十年超过7000美元:ETC前业务开发经理Donald McIntyre发文表示,ETC将在未来十年超过7000美元,并提出了8条理由。

1. 很少有系统能赢得区块链格式之战。基础层将仅存3到4条链,因为ETH将迁移至PoS证明,这将提供ETC占据市场份额的机会。

2. 中本聪共识是最安全的共识机制。

3. ETC将是基础层上唯一的PoW智能合约区块链。

4. 网络重组攻击使其更具弹性。ETC从未被黑客入侵过,对网络的历史性51%攻击仅表明它按设计工作。

5. 供应量有上限为2.1亿ETC。

6. 其位置将使其在基础层与比特币互补。比特币将是基础层上最大的系统,占有50%的份额,而ETC将以25%的份额排名第二,因为它作为通用计算平台的价值很高。

7. 基础层将与黄金一样有价值。

8. 因此ETC在未来十年内可能会升至7,000美元以上。如果基础层在十年内仅实现黄金价值的50%,那BTC将价值3万亿美元或约每??BTC 143,000美元,ETC将价值1.5万亿美元或约每??ETC 7100美元。[2021/1/5 16:29:16]

注意1:Cargo是Rust的包管理器,其包装称为Crates。

注意2:参考最后一个命令,target指的是rust项目目录中包含程序构建的目标文件夹。我们将在这里构建智能合约文件。

美丽说创始人徐易容:十年内区块链创业者必须抓住BIM三驾马车:3月28日,美丽说创始人徐易容在甲子光年区块链峰会上提出,区块链创业者未来十年要抓住BIM这“三驾马车”,即:区块链、IP和品牌、迷你小程序。未来生产关系将基于区块链,IP和品牌则是价值来源,而迷你小程序将会是用户的主要入口。[2018/3/28]

Substrate

使用以下命令安装Substrate:

Wasmutilities

Ink智能合约在上传到Substrate链之前会编译到WebAssembly中。为此,我们需要安装一些实用程序:

Ink

我们现在可以通过箱子安装Ink,运行以下命令:

本地运行substrate链

我们将在您的机器上运行的本地Substrate区块链上进行测试。现在安装了Substrate,运行以下命令来初始化链:

--dev标志为您初始化开发区块链,仅在您的计算机本地化并初始化一些用户帐户。

此设置纯粹是为了测试目的;您可以将其视为与Truffle的Ganache程序,该程序运行本地基于以太坊的链,为测试目的进行了调整。

现在,您将注意到正在运行的节点正在验证新区块。按CTRLC或关闭终端窗口将停止节点执行,但链状态将持续存在,直到您下一次运行链。在此注释中,如果您想要开始一个新链,请运行以下操作来清除您的链:

Tessera创始人宣布将推出NFT市场Escher:金色财经报道,NFT碎片化协议Tessera创始人Andy Chorlian宣布将推出新NFT市场Escher。Escher将专注于为“基于版本(edition-based)”的NFT提供支持,无论这些NFT存在于哪个平台或合约。

Escher支持ERC-1155和ERC-721协议,可以将以艺术家/创作者在不同平台和不同版本的NFT作品聚合到一个简单易用的界面上供用户交易,而无需跳转到其他平台。[2023/2/7 11:51:39]

随着我们的Substrate链运行和Ink的准备,我们可以编写合同。在这样做之前,还需要提到编辑器支持。我个人发现VisualStudioCode是最好的编辑工作,不仅是Ink开发,还有Rust开发。快速设置方法:

如果您还没有安装编辑器,请从此处安装VSCode安装RLS扩展和WebAssembly扩展。这可以直接在Extensions选项卡下的编辑器中完成,或按ShiftCMDX直接跳转到它。

设置Ink项目

在安装了所有依赖项之后,现在让我们设置项目。

目前最简单的方法是安装Ink的“HelloWorld”合同,名为Flipper。安装Flipper后,我们可以构建已经包含的内容,而不必担心配置和编译脚本-这些都在Flipper中提供。

注意:Substrate和Ink都处于快速发展阶段并且尚未完成全部功能,因此智能合约环境和智能合约代码本身很可能随着Parity越来越接近框架的最终版本而改变。

ZigZag:此前已出售了25万枚代币:6月26日消息,zkSync上的订单簿DEX ZigZag在Twitter上表示,此前已出售了25万枚代币。[2022/6/26 1:32:15]

启动我们的Ink项目,请使用cargo获取Flipper:

Flipper为我们提供了开始编写智能合约所需的项目样板,包括:

src/lib.rs中的一个简单的Flipper契约,它通过flip方法简单地“翻转”true和false之间的布尔值,并使用get方法在链上获取此值。我们将用NFT合同替换此文件。

Rust特定的Cargo.toml文件,概述项目依赖项和模块元数据,.gitignore文件和build.sh文件。build.sh文件是我们运行以编译我们的智能合约,导致合同的已编译.wasm文件,合同的JSON抽象等等。我们将进一步探讨建成合约。

让我们把flipper改成一个更合适的名字:nftoken。修改以下内容:

/flipper文件夹名称为/nftoken

Cargo.toml:将name和name更改为nftoken

build.sh:修改PROJNAME=nftoken

另外,确保我们有权运行nftoken/build.sh:

最后,将/nftoken文件夹添加到vs代码工作区,我们就可以开始编写了。

关于Ink

Ink具有多个抽象级别,其中较高级别抽象较低级别。我们将使用最高级别,即语言级别或lang级别。这些级别也被分成了可以在这里探索的模块。

lang模块下面是模型和核心模块,分别侧重于中级抽象和核心实用程序。在核心模块下方,我们还可以期望专门用于创建和管理Ink智能合约的CLI。

虽然在撰写本文时几乎没有关于如何使用这些模块的内容,但我们确实有原始API文档可供浏览,包括核心模块和模型模块。如果您正在阅读本文,那么现在可以浏览这些文档,尽管我们下面的合同将利用其中一些API来展示如何通过不可互换的令牌合同在lang级别的上下文中使用它们。

考虑到这一点,接下来让我们来看看我们的lang派生合约的结构是什么样的,并将它与我们对基于Solidity的智能合约的期望进行比较。

智能合约架构

构造一个ink智能合约类似于solidity智能合约,其中我们期望的solidity的主要组成部分在ink中也是一致的:合同变量、事件、公共函数和私有函数,以及获取调用方地址的环境变量等等。

下面是NFoTek契约是如何构造的抽象:

让我们简要地访问这些部分,以及它们与我们对Solidity合同的期望有何不同。Ink是基于Rust构建的,因此这里的所有语法都是有效的Rust语法。

我们的模块声明部分是我们将外部功能引入合同的地方,它与Solidity使用声明的性质类似。

事件在Event枚举中声明,而使用Solidity我们分别定义事件,将每个事件键入事件:

如果solidity合同嵌入到接口块中,那么ink合同嵌入到合同中!宏。我们的事件在这个宏之外声明,而事件在solidity接口内声明。如下所述。

注意:rust中的宏是一个声明,表示包装表达式将被包围的语法块。宏在句法层面抽象,所以智能合约!宏正在用更多的语法包装其内容。

使用Ink,我们的契约变量写在我们合同名称的结构中。从Rust的HashMap类型派生的哈希映射代替Solidity的映射类型,提供key=>值列表。

Substrate如何存储值

在Substrate链上持久存储的任何数据称为外在数据,而Ink为我们提供了通过存储模块在链上存储外部数据的方法,存储模块位于语言的核心模块中。换句话说,您计划在链上保留的所有合约变量都将使用存储中的类型。相反,存储器模块也可用于在存储器上操作的数据结构。

另一方面,Solidity对此采用了不同的方法。从Solidity0.5开始,存储和内存引用类型被引入到函数参数或函数变量中,因此契约知道在哪里引用这些变量。但是,对于Solidity中的合同变量,这不是必需的。

原始类型也可用,并且在两种语言中都是一致的;Rust使用u64,Solidity采用更详细的uint64类型声明。总的来说,在两种语言之间实现相同的契约变量结构非常简单。

在上面的示例中,存储对象处理的值的类型通过尖括号传入,而不是通过类型的泛型。

初始化函数的概念存在于Ink和Solidity中,尽管以不同的方式实现。使用Ink,我们在Deploy{}实现块中显式定义deploy方法。我们为此方法定义的参数代表了我们在初始化合同时发送的数据。例如。对于我们的不可替代的令牌,我们将提供初始数量的令牌:

公共和私有方法也在impl块中定义,其中公共方法使用pub显式定义。同样,在将此语法与Solidity的语法进行比较时,内部和外部用于定义私有或公共资源。

注意:在Rust中,函数,模块,特征和结构在默认情况下是私有的,并且必须使用pub关键字定义,以便它们可以从外部访问。这里pub的扩展是特定于Ink的,并且必须包含公共Ink功能。

同样,我们将私有函数和公共函数分开放在单独的impl块中,并为已定义的公共函数包含pub。

作为合同的最后一个构建块,定义了一个测试模块,在测试我们的函数时断言各种条件。在测试模块中,我们可以测试我们的合同逻辑,而无需编译并将其部署到Substrate链,从而可以快速解决错误并验证合同是否按预期工作。

接下来

我们现在已经讨论了Ink智能合约的构建模块。在本系列的下一部分中,我们将更深入地探讨非可替代令牌智能合约的功能,理解所使用的Rust设计模式以及它们如何与我们的智能合约逻辑相结合。然后我们将介绍构建智能合约并将其部署到本地Substrate链的过程,并使用PolkadotJS测试其功能。

本文转载公众号:区块链研究实验室,专注区块链技术,产品社群,经济模型等全方位的知识体系输出,为大家带来不一样的社群学习体验。欢迎联系作者微信加入社群:csschan1120??

标签:INKRATTRABSTBlinky BobGeneration FinanceTRADEBSTK币

币安下载热门资讯
HTT:币客交易所钱包迁移_tps币圈

亲爱的用户 币客交易所将于6月19日13:00(GMT8)对BTC,USDT,MAID钱包进行迁移,届时会对以上币种充提造成影响,预计最长完成时间48h,具体开放时间请等待官网公告.

BOO:十年遇劲敌 Facebook推动下9000的BTC还能买吗?_Bitbook Gambling

今日Facebook的加密货币Calibra的官网正式上线,其网站介绍为“一个连接世界的钱包”。他是一种全新的加密货币,将是所有人的钱能更好的运作.

LIB:重磅:Facebook发布Libra加密货币 100家公司参与 全球第一的稳定币诞生?_SQUA

连月来的“疯狂”等待终于尘埃落定。就在刚刚,脸书(Facebook)发布了Libra,一个为全球提供无国界的数字货币和金融服务的区块链平台。白皮书和官网同步上线.

区块链:谷燕西:Facebook稳定币Libra带来的机遇、挑战和可见的未来_okex数字资产交易平台

撰文:谷燕西,中国和美国金融市场的多年从业者,区块链和加密数字资产的研究者和实践者,历任华泰联合证券信息技术副总监和数家金融服务公司COO,曾经服务于美国期权结算公司.

FACE:Facebook发布的稳定币 会让数字货币应用从1.0 升级到 2.0?_元宇宙概念是什么意思Facebook

在白话区块链学堂推出的比特币日报第33期Facebook或将于618推出白皮书,其加密货币项目计划提速,我们提到了Facebook在2018年发生了数据门事件,有5千万用户的隐私数据被泄露.

区块链:Facebook加密货币项目Libra区块链网络计划在2020年上半年正式发布_LIBRE

6月18日,Facebook加密货币白皮书发布,其中提到,现已开放了Libra区块链的源代码并推出Libra的初始测试网,预定的针对性发布日期为2020年上半年.