LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 如何部署您自己的智能合约

如何部署您自己的智能合约

2020-05-08 红花汇 来源:区块链网络

关注ThunderCore

点击了解最具潜力项目

全面洞察区块链最新技术及趋势

智能合约是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。那智能合约该怎样部署呢?本文将带给您你初级入门知识和方法。

如何使用智能合约

就像转账一样,钱包是使用智能合约的入口点。?不过除了价值和接收者(在转账的情况下),钱包需要更复杂的输入项,因此需要高级和自定义的接口才能与合约进行交互。

例如,如果您正在使用诸如Augur之类的预测交易平台,则需要指定1.预测什么;2.计划投入多少钱。该接口与智能合约一起被称为DApp或去中心化应用程序。大多数DApp可以通过专用的浏览器进行访问,也可以通过带有钱包功能插件的标准浏览器进行访问,如metamask。该界面会自动挂接到钱包,并根据用户输入项生成智能合约交易。通过这种方式,用户无需知道合约要求的信息底层格式。

需要重点注意的是,尽管用户用户无需知道合约要求的信息底层格式,但用户始终可以选择审核交易,甚至无需界面即可生成自己的交易。因此,即使这些接口中的大多数都托管在传统的中心化的受信任服务器上,去中心化也不会受到影响,一是因为他们可以被完全审计,而是因为不需要它们。

使用您的第一个TT链DApp,只需获得一个钱包和一些资金,然后在TT站钱包(ThunderCore Hub) 上挑选东西即可试用!

如何编写自己的智能合约

感谢区块链生态系统中充满热情的人们,现在网上有一些详细的教程,可以帮助您起步并部署您的第一个智能合约。

有一些很棒的教程可以帮助您起步并部署您的第一个智能合约。由于TT链与EVM兼容,因此这些教程中都同样适用于TT链。在TT链上部署智能合约,享受超快确认速度和低廉交易费用。

尽快区块链属于新兴领域,但相关开发者工具已经发展非常成熟。以下是部署智能合约需要了解的一些关键工具:

语言-Vyper和Solidity当前是两种与EVM兼容的稳定的智能合约语言,都是不错的选择。其他更多语言还在开发中。编译器将人类可读的语言转换为EVM可读的字节码,然后可将其部署到区块链。

Web3-智能合约只是DApp的后端。前端通常基于web3 api接口构建。Web3通过以太坊JSON RPC协议与网络上的多个完整节点之一进行通信,以读取合同状态并将交易发送到合约以修改其状态。

IDE-Remix是一款出色的基于IDE的网站,可让您以低成本起步。它具有内置的调试器和用于探测已部署合同的工具。希望处理具有多个合约和库的更复杂项目的开发人员可以使用Truffle等工具。

钱包-由于所有操作都是通过交易完成的,因此您将需要一个钱包来部署和测试智能合约,就像通过区块链转账一样。大多数区块链都提供测试网,因此您在开发过程中不会花费真钱。您还可以免费在自己的本地链上进行测试。

使用您的第一个TT链DApp,只需获得一个钱包和一些资金,然后在TT站钱包(ThunderCore Hub) <TODO链接dapp门户>上挑选东西即可试用!

EasyInvestv示例

最后,让我们来分步部署一个真正的智能合约。EasyInvestV设计简单、运行高效,具备可能的荒谬性,因此我特地选择了EasyInvestV作为示例。EasyInvestV是一个简单的庞氏骗局式智能合约,它的规则很简单:

1.存款

2.如果合约中有足够的资金,您可以每天提现总投资的1/20的资金

值得注意的是,在20天后,您将从其他人的存款中提款,从而奖励早期的存款人。该合约在巅峰时期持有超过1470 ETH,当时价值超过30万美元。

以下是您也可以在Etherscan上看到的代码。

contract EasyInvest5 {

// records amounts invested

mapping (address => uint256) public invested;

// records blocks at which investments were made

mapping (address => uint256) public atBlock;

// this function called every time anyone sends a transaction to this contract

function () external payable {

// if sender (aka YOU) is invested more than 0 ether

if (invested[msg.sender] != 0) {

// calculate profit amount as such:

// amount = (amount invested) * 5% * (blocks since last transaction) / 5900

// 5900 is an average block count per day produced by Ethereum blockchain

uint256 amount = invested[msg.sender] * 5 / 100 * (block.number - atBlock[msg.sender]) / 5900;

// send calculated amount of ether directly to sender (aka YOU)

msg.sender.transfer(amount);

}

// record block number and invested amount (msg.value) of this transaction

atBlock[msg.sender] = block.number;

invested[msg.sender] += msg.value;

}

}

让我们逐行来分析:

mapping (address => uint256) public invested;

// records blocks at which investments were made

mapping (address => uint256) public atBlock;

这两行定义了合同的唯一状态变量。这是两个映射,展示每个用户(地址)已经投资了多少,以及最后一次投资是在哪个区块上进行的。

function () external payable {

合约中只有一项功能,来保证既可以存款又可以提现。此功能具有后备的特殊签名(function),在这种情况下,这意味着它将捕获对该智能合约的所有函数调用。可以将其标记为外部和可支付,其中外部表示可以从交易中进行调用,可支付表示可以将价值(在这种情况下为ETH)发送给它。

// record block number and invested amount (msg.value) of this transaction

atBlock[msg.sender] = block.number;

invested[msg.sender] += msg.value;

跳到该功能的结尾,我们将在您每次调用此功能时看到该信息它会跟踪您的帐户发送给合约的总金额、以及该地址最后一次使用该合约的时间。?内置的msg.sender是当前正在调用该函数的地址,msg.value是随交易传输的值数量,block.number是当前的区块号。发送给该合约的价值存储在合约地址中。

if (invested[msg.sender] != 0) {

// calculate profit amount as such:

// amount = (amount invested) * 5% * (blocks since last transaction) / 5900

// 5900 is an average block count per day produced by Ethereum blockchain

uint256 amount = invested[msg.sender] * 5 / 100 * (block.number - atBlock[msg.sender]) / 5900;

回到开始,我们首先检查您的地址是否已经投入任何资金。如果已投入,我们继续以每天总投资额的1/20的比例进行提现。

// send calculated amount of ether directly to sender (aka YOU)

msg.sender.transfer(amount);

最终的内置功能将价值从合约地址转到到调用者的地址。值得注意的是,如果合约中提现资金数额不足,则整个交易将失败,您将失去投资!

ThunderCore (TT链)是新一代的区块链公链平台。它突破了现今区块链的困境,达成快速、高扩展性、安全,而且又与以太坊虚拟机兼容。

ThunderCore创办团队集结了美国学术界顶级的智能合约,分布式算法先行者,和硅谷的资深创业者, 并独特采用严密数学证明的PoS共识算法, 保障区块链的效率和安全。通过此算法, ThunderCore解决了以太坊高GAS费、低TPS、高交易确认时间的问题。

—-

编译者/作者:红花汇

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...