主页 > imtoken冷钱包 > geth部署智能合约_如何编写和部署你的第一个智能合约
geth部署智能合约_如何编写和部署你的第一个智能合约
现在您已经了解了智能合约是什么以及智能合约如何运行的基本知识,我们可以直接进入如何制作我们自己的智能合约!
现在您了解了什么是智能合约以及如何运行它,让我们直接深入了解如何制作您自己的合约!
配置(设置)
我们将为此使用一个工具:Pragma。 它是一个易于使用的平台,用于创建和部署智能合约。 在这里注册并转到编辑器:
为此,我们将使用一个工具:Pragma。 它是一个易于使用的平台,用于创建和部署智能合约。 在这里注册并进入编辑器:
登录到元掩码。 如果您还没有安装 MetaMask,您可以从这里开始。
登录到元掩码。 如果尚未安装 MetaMask,您可以从这里开始。
在 Pragma 和 MetaMask 中切换到 Kovan 测试网络。 只是为了给你一个关于测试网的简要概述,请查看这篇文章。
在 Pragma 和 MetaMask 中切换到 Kovan 测试网络。 只是对测试网络的简单介绍,查看这篇文章。
以太坊主网是官方的以太坊网络。 它更安全,并使用具有实际货币价值的以太币。
以太坊主网是官方的以太坊网络。 它更安全并且使用具有实际货币价值的以太币。
测试网是游乐场以太坊网络,其中以太被同意没有货币价值。 开发人员使用这些游乐场来测试应用程序,然后再将它们部署到用户的主网上。
测试网是以太坊游乐场网络,其中以太币被认为没有货币价值。 开发人员使用这些游乐场来测试应用程序,然后再将它们部署到用户的主网。
要在这些网络之间切换,请单击 MetaMask 图标旁边的网络名称并选择网络。 对于本教程,请选择 Kovan。
要在这些网络之间切换,请单击 MetaMask 图标旁边的网络名称并选择网络。 对于本教程,选择 Kovan。
编写智能合约
以下合约将实现最简单的加密货币形式。 可以凭空生成代币,但只有创建合约的人才能做到(实施不同的发行方案是微不足道的)。 此外,任何人都可以相互发送硬币,而无需使用用户名和密码进行注册。 您只需要一个以太坊密钥对。
以下合约将实现最简单的加密货币形式。 硬币可以凭空铸造,但只有创建合约的人才能做到(实施不同的发行方案很简单)。 此外,任何人都可以互相发送硬币,而无需使用用户名和密码进行注册。 您只需要一个以太坊密钥对。
这段代码基本上可以让你铸造代币并将代币发送到其他账户。
这段代码基本上可以让你铸造代币并将代币发送到其他账户。
让我们逐行过一遍:
让我们逐行检查它:
pragma solidity ^0.4.21;
这表明源代码是为 Solidity 版本 0.4.21 或任何不会破坏功能的更新版本编写的。 这是为了确保代码在新编译器版本中的行为不会有所不同。
这表明源代码是为 Solidity 版本 0.4.21 或任何不破坏功能的更新版本编写的。 这是为了确保代码不会与较新的编译器版本不同。
contract yourToken
与您的令牌相关的所有内容都包含在该合同中。 从本质上讲,solidity 合约是位于以太坊区块链上某个地址的函数和状态(代码和数据)的集合。
与 yourToken 相关的一切都包含在这个合约中。 本质上,合约是位于以太坊区块链地址上的功能和状态(代码和数据)的集合。
address public minter;
这是铸币厂的地址。 关键字“public”使这些变量可从外部读取。
这是造币厂的地址。 关键字“public”使这些变量在外部可读。
event Sent(address from, address to, uint amount);
事件允许轻客户端 (UI) 有效地对更改做出反应。
事件允许轻客户端 (UI) 有效地响应变化。
function yourToken() public {
minter = msg.sender;
}
让我们将您的以太坊地址设置为合约的铸造者。 您需要通过 MetaMask 访问合约才能进行铸造。 我们将在部署合约后再次讨论这个问题。
让我们将您的以太坊地址设置为合约的创建者。 您需要通过 MetaMask 访问合约才能创建合约。 一旦部署了合约,我们将再次解释它。
function mint(address receiver, uint amount) public {
if(msg.sender != minter) return;
balances[receiver]+=amount;
}
此功能可让您铸造所需数量的硬币。 您可以铸造任意数量的代币。 if 条件告诉系统如果你不是铸币者就停止执行,这是在 yourToken 函数中设置的。
此功能允许您铸造任意数量的硬币。 您可以铸造任意数量的代币。 如果条件不是,如果你不是标志函数中设置的铸币者,系统将停止执行。
如果您实际上是铸造者,它可以让您铸造代币。
如果您实际上是铸造者,则可以铸造代币。
function send(address receiver, uint amount) public {
if(balances[msg.sender] < amount) return;
balances[msg.sender]-=amount;
balances[receiver]+=amount;
emit Sent(msg.sender, receiver, amount);
}
这是一个让一个地址将令牌发送到另一个地址的功能。 它有两个参数:receiver 和 amount。 它减少了发件人地址的金额,并将相同的金额添加到收件人的地址。 我们之前声明的事件已发送,现在用于进行传输。 目前,我们将发送者保留为 msg.sender,即铸币者,因为我们不想使合约复杂化。
此功能允许一个地址将令牌发送到另一个地址。 它有两个参数:收件人和金额。 它会减少发件人地址中的金额,并将相同的金额添加到收件人地址中。 我们之前所说的事件发送用于传输。 现在,由于我们不想使合同复杂化,我们将发件人保留为 msg.sender(即 minter)。
就是这样。 你的合约现在已经准备好了,所以让我们编译它。
就这样。 现在您的合同已准备就绪,让我们编译它。
编译和部署智能合约
合约编译完成后以太坊智能合约创建,让我们将其部署到区块链上。 如前所述以太坊智能合约创建,我们将使用 Kovan 测试网来部署合约。
合约编译完成后,让我们将其部署到区块链上。 如前所述,我们将使用 Kovan 测试网来部署合约。
检查智能合约是否已部署。
检查智能合约是否已部署。
对于我为本教程部署的合约,这是交易。 您也可以在合同下的 Pragma 中看到它。
对于我为本教程部署的合约,这就是交易。 你也可以在 Pragma 的契约下看到它。
Interact with the smart contract in Pragma(Interact with the smart contract in Pragma)
你有它。 您的第一个智能合约,部署在区块链上。 :)
你拥有了它。 您的第一个智能合约,部署在区块链上。 :)
引入了许多新概念以及一些非常有用的工具。 这可能有点让人不知所措,没关系! 试着了解这些概念,然后用它来运行。
介绍了许多新概念以及一些非常有用的工具。 这可能有点让人不知所措,没关系! 只需尝试掌握概念,然后将其付诸实践即可。
您创建过任何简单但有趣的智能合约吗? 将它们发布在评论中,我会在帖子中添加它们以供参考。
您创建过任何简单但有趣的智能合约吗? 将它们发布在评论中,我会将它们添加到帖子中以供参考。
有问题吗? 在评论中添加他们或加入我们的电报群并直接与我们交谈。
有问题吗? 将他们添加到评论中,或加入我们的电报群并直接与我们联系。
译自:
geth 部署智能合约