Polkadot是下一代区块链协议,它将多个专用区块链连接到一个统一的网络中。它建立在先前区块链网络的革命性承诺之上,同时提供一些基本优势。Polkadot的优势Polkadot项目将通过提供具有以下优势的类似桥梁的框架来彻底改变区块链技术:无限可扩展性-Polkadot可以支持无限数量的区块链并允许它们连接(称为顺序链)。自适应共识机制——由于不同的区块链在不同的共识机制上运行,Polkadot平台提供了一个开放和自适应的共识机制。跨链交易——该框架支持不同区块链之间的价值转移。明确的治理机制——它具有明确的治理机制,从而消除了其他区块链面临的主要问题。可升级性——Polkadot支持升级,无需借助费力的硬分叉来实施更改。集体安全——连接到Polkadot的区块链可以受到统一安全保护伞的保护。这可以保护没有安全启动的小型链。低交易费用——与以太坊相比,Polkadot的交易费用低。智能合约智能合约是由P2P网络管理的自动执行软件。它是一种有效的权利管理工具,为网络参与者之间的协议协调和执行提供了一个框架,而无需传统的法律合同。它们可用于正式确定两方之间的简单协议、组织章程或创建代币。在我们今天使用的互联网上,由于缺乏可信的本地结算层,许多科技巨头(例如亚马逊、eBay、Airbnb、优步等)的商业模式和“存在理由”可能会让不熟悉的交易者感到困惑缺乏信任。智能合约恰恰为该问题提供了解决方案。他们可以将个人和机构之间的关系以及他们完全在Internet上拥有的P2P关系正式化,而无需受信任的中介。尽管智能合约的概念并不新鲜,但区块链技术似乎是智能合约实施的催化剂。一种更原始??的智能合约形式是自动售货机。交易规则被编入机器。您通过按下与该产品关联的数字来选择产品,插入硬币,然后机器检查您是否投入了足够的钱,作为智能合约。自动执行协议智能合约是嵌入在由区块链管理的计算机代码中的自动执行协议。该代码包含一组规则,智能合约的各方同意按照这些规则相互交互。如果满足预定义的规则,协议将自动执行。智能合约提供了有效管理标记化资产和两方或多方之间访问权限的机制。人们可以将其视为一个密码盒,如果满足某些预定条件,它就会解锁价值或访问权限。他们管理的基础价值和访问权限存储在区块链上,这是一个透明的共享分类账,可以保护他们不被删除、篡改和修改。因此,智能合约可以从区块链内部(其他智能合约)和外部(外部数据源)的实体调用智能合约。在这些实体中,所谓的“预言机”将来自链上世界的智能合约相关数据注入到智能合约信息存储中。如果实施得当,智能合约可以提供优于传统合同法的交易安全性,从而降低审计和执行此类协议的协调成本。他们可以实时跟踪协议的执行情况,因此可以节省成本,因为合规性和控制会立即发生。智能合约将协议的交易成本降低了几个数量级;具体而言,它们降低了达成协议、使协议正式化和实施协议的成本。此外,智能合约的安全性仍然是技术层面需要解决的问题。我们还需要能够执行更复杂的合同条款,包括去中心化的争议解决工具。虽然这种发展可能需要更多时间才能成熟,但一些有趣的争议解决方案已经在开发中,例如“Kleros”、“OpenLaw”或“Jur”。随着技术变得更加成熟和广泛以及法律标准的采用,我们很可能会在未来几年看到法律合同和智能合同的融合。但是,我们目前缺乏最佳实践,可能需要一段时间才能进入集体学习阶段。用例智能合约用例范围从简单到复杂。它们可用于简单的经济交易,智能合约也可用于登记任何类型的所有权和产权。智能合约有可能颠覆许多行业。用例可以在银行、保险、能源、电子政务、电信、音乐产业、艺术、交通、教育等领域。使用智能合约,每个协议、每个流程、任务和支付都可以有数字记录和签名,这可以识别、验证、存储和共享。“Bernstein”(专利登记处)或政府和半政府登记处(土地所有权、出生证明类别、学校和大学学位)等时间戳服务是简单技术用例的示例。虽然时间戳服务在技术上易于实施,但此类用例的监管方面可能要复杂得多,具体取决于行业类型和具体用例。此外,智能合约还可以用于商品或服务供应链中众多参与者之间更复杂的协议,或者管理一群拥有相同利益和目标的人,而不需要传统的中心化机构。去中心化自治组织(DAO)就是这样一个例子,它可能代表了最复杂的智能合约。因此,智能合约可以将治理规则(组织章程、治理条例、议事规则或组织章程)标准化,用自动执行的代码代替日常的运营管理。以太坊2.0中的模型分片都具有相同的状态转换函数(STF),就像管理区块链如何更改每个块的状态的规则一样。该STF提供了智能合约执行的接口。合约存在于单个分片上,分片之间可以发送异步消息。同样,在Polkadot中,每个分片承载核心逻辑,这些分片并行执行,Polkadot可以跨分片发送异步消息。但是,每个Polkadot分片(Polkadot术语中的“对链”)都有一个唯一的STF。使用组合逻辑,应用程序可以存在于单个分片或多个分片中。Polkadot使用WebAssembly(Wasm)作为“元协议”。只要Polkadot上的验证人可以在Wasm环境中执行,分片的STF就可以是抽象的。架构Polkadot是一个具有共享安全性和互操作性的异构多链。中继链中继链是Polkadot的中心链。Polkadot的所有validators都被放置在DOT的中继链上,并进行中继链验证。中继链包含相对较少的交易类型,包括与治理机制、平行链拍卖和参与NPoS交互的方式。中继链有意具有最少的功能,主要职责是协调整个系统。Parachain和ParathreadSlotsPolkadot可以支持多个执行槽。这些插槽就像计算机处理器上的核心(例如,现代笔记本电脑的处理器可能有八个核心)。这些核心中的每一个都可以一次运行一个进程,Polkadot使用两种订阅模型允许这些插槽:平行链和平行线程。一条平行链有一个专门的链槽(核心),就像一个不断运行的进程。平行线程在一个组中共享插槽,因此更像是需要唤醒和运行频率较低的进程。Polkadot网络中发生的大多数计算将委托给处理各种用例的特定平行链或平行线程实现。Polkadot对平行链可以做什么没有任何限制,除了它们必须能够生成可以由分配给平行链的验证器验证的证明。该证明验证了平行链的状态转换。一些平行链可能特定于特定应用程序,其他平行链可能专注于特定功能,例如智能合约、隐私或可扩展性——不过,其他平行链可能是实验性架构,在本质上不一定有所区别。区块链。Polkadot提供了多种方式来在特定时间段内为侧链插槽提供安全插槽。平行线程是共享插槽的池的一部分,并且必须赢得单个块的拍卖。平行线程和平行链具有相同的API。他们的区别是经济上的。平行链必须在插槽租用期间保留DOT;平行线程将按块收费。平行线程可以成为平行链,反之亦然。共享安全连接到Polkadot中继链的平行链都共享中继链的安全性。Polkadot在中继链和所有连接的平行链之间共享状态。如果中继链由于某种原因必须恢复,所有平行链也将恢复。这是为了确保整个系统的有效性能够持续存在,并且不会损坏任何单个部分。共享状态使使用Polkadot平行链时的信任假设仅是中继链验证器集中的那些,而不是其他任何东西。由于在中继链上设置的验证器预计是安全的并且有大量的股份支持它们,因此侧链应该从这种安全性中受益。SubstrateSubstrate是一个用于构建区块链的开源、模块化和可扩展的框架。底层从头开始设计得非常灵活,允许创新者设计和构建满足他们需求的区块链网络。它提供了构建自定义区块链节点所需的所有核心组件。Substrate开发者中心节点模板我们以节点模板的形式提供了一个开箱即用的基于Substrate的节点,您应该在阅读本文时对其进行编译。无需进行任何更改,您就可以共享此节点模板并使用加密货币创建一个有效的区块链网络!我们将教您如何在“开发”模式下使用此节点,这使您可以通过节点运行网络并拥有一些预配置的用户帐户和资金。构建和部署合约1.安装先决条件#InstallHomebrewifnecessaryhttps://brew.sh//bin/bash-c"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install.sh)"#确保Homebrew是最新的,安装opensslbrewupdatebrewinstallopenssl2。Rust开发者环境#Installcurlhttps://sh.rustup.rs-sSf|sh#Configuresource~/.cargo/envrustupdefaultstable3.Substrate自己构建Substrate的开发者应该总是Latestable使用最新的无错误版本的Rust。这是因为Substrate代码库遵循Rustnightly技巧,这意味着对Substrate的更改通常取决于上游对Rustnightly编译器的更改。为确保您的Rust编译器始终是最新的,您应该运行:rustupupdaterustupdatenightlyrustuptargetaddwasm32-unknown-unknown--toolchainnightly4。Wasm工具链现在,配置每晚构建以使用Wasm编译目标:rustuptargetaddwasm32-unknown-unknown--toolchainnightly5。编译Substrate安装先决条件后,您可以使用Git克隆SubstrateDeveloperHub节点模板,这是在Substrate上构建的良好起点。gitclone-bv3.0.0—depth1https://github.com/substrate-developer-hub/substrate-node-template6.编译节点模板cdsubstrate-node-template#注意:你应该总是使用`--release`标志cargobuild--release#^^这需要一段时间!7.安装前端模板本教程使用ReactJS前端模板,让您可以与上一步应该开始编译的基于Substrate的区块链节点进行交互。将来,您可以使用相同的前端模板为您自己的项目创建UI。要使用前端模板,您需要Yarn,它本身需要Node.js。如果您没有这些工具,则必须按照以下说明安装它们:安装Node.js安装Yarn现在您可以使用这些命令来设置您的前端模板。#Clonethefrontendtemplatefromgithubgitclone-bv3.0.0--depth1https://github.com/substrate-developer-hub/substrate-front-end-template#Installthedependenciescdsubstrate-front-end-templateyarninstall8。启动节点运行以下命令启动您的节点:#Runatemporarynodeindevelopmentmode./target/release/node-template--dev--tmp使用此命令,如果您的节点成功运行,您应该看到如下内容:NodestartedStarttheFront-EndTemplate#MakesuretorrunthiscommandintherootdirectoryoftheFront-EndTemplateyarnstartfrontend9.ContractComposition对于使用其他现代智能合约语言编程的开发人员来说应该很熟悉。合约的骨架具有您可能期望的所有相同组件:事件存储部署(构造函数)函数公共函数内部函数每个合约函数都具有明确定义的可变性和可见性。在这些函数中,您可以访问几种常见的基本类型,例如AccountId、Balances、Hash等。10.创建墨水!项目我们将使用ink!CLI生成Substrate智能合约项目所需的文件。确保你在你的工作目录中,然后运行:cargocontractnewflippercdflipper/flipper|+--lib.rs<--ContractSourceCode|+--Cargo.toml<--RustDependenciesandink!Configuration|+--.gitignore11。要创建合约,请运行以下命令来编译您的智能合约:cargo+nightlycontractbuild将项目投影为Wasm二进制文件、元数据文件(包含合约的ABI)和将两者捆绑在一起的.contract文件。该文件可用于将合约部署到链中。如果一切顺利,你应该会看到一个包含以下文件的目标文件夹:target└──flipper.wasm└──metadata.json└──flipper.contract12。测试你的合约,你会看到一个简单的测试,它验证合约的功能。在您的项目文件夹中运行:cargo+nightlytest您应该看到成功完成的测试:$cargo+nightlytestrunning2teststestflipper::tests::it_works...oktestflipper::tests::default_works...oktestresult:ok.2passed;0failed;0ignored;0measured;0filteredout13.部署合约现在我们已经从源代码生成了Wasm二进制文件并启动了Canvas节点,我们想要将合约部署到我们的Substrate区块链。Substrate上的智能合约部署与传统智能合约区块链上的部署有些不同。每次你在另一个平台上推送合约时,都会部署一个全新的智能合约源代码块,而Substrate选择优化这一行为。.在Substrate中,合约部署过程分为两部分:把你的代码放到区块链上创建一个合约实例通过这种模式,可以一次性把ERC20标准等合约代码放到区块链上,但是可以实例化任意多个次。无需继续上传相同的源代码并浪费区块链上的空间。上传Wasm和元数据放上代码,当你按下Deploy时,你应该会看到一系列事件,包括新帐户的创建(system.NewAccount)和合约的实例化(contracts.instantiate):打开CanvasUIA特别设计的“上传”部分。使用下拉菜单选择具有一定账户余额的部署账户,例如Alice。在输入字段中输入合约名称。提供一个flipper.contract文件作为捆绑的Wasmblob和元数据。14.签署合同点击上传,然后在确认页面签署并提交。这应该发出一个contracts.PutCode事件。如果交易成功,您将收到一个system.ExtrinsicSuccess事件,您的WASM合约将存储在您的Substrate区块链上!创建合约实例智能合约作为区块链上会计系统的扩展而存在。因此,创建此合约的实例将创建一个新合约,该合约将存储智能合约管理的任何余额的AccountId,并允许我们与合约进行交互。在上一步上传合约后,确认屏幕将显示代表我们智能合约的信息。现在,我们需要部署智能合约来创建实例。按确认屏幕上的“部署代码”按钮。要实例化我们的合约,接受默认选项,给这个合约账户一个捐赠,1000单位来支付存储租金,并将最大允许的gas值设置为1000000:当你按下Deploy时,你应该看到一系列事件,包括创建新帐户(system.NewAccount)和实例化合约(contracts.instantiate):现在您的合约已完全部署,我们可以开始与它交互了!Flipper只有两个功能,因此我们将向您展示同时使用这两个功能的感觉。在上一步中,部署好Flipper合约实例后,在出现的确认画面中,点击“ExecuteContract”按钮。default()函数如果你回顾一下我们合约的default()函数,我们将Flipper合约的初始值设置为false。让我们检查一下是否是这种情况。在“要发送的消息”部分,选择“get():bool”消息并接受其他选项的默认值。按“Call”并确认它返回值false:sotrue让值现在转向!我们可以通过UI发送的另一种消息是flip()。同样,接受其他选项的默认值。您会注意到flip()消息默认为事务调用。如果交易成功,那么我们应该可以返回get()函数,查看更新后的存储:至此,我们已经成功在Polkadot上构建并部署了智能合约,如有任何问题,欢迎留言在评论区。
