以太坊智能合约如何执行智能合约?
区块链技术在顶级技术中占据主导地位的主要原因是它的去中心化。 虽然区块链的主要目的是在没有中心的情况下维护交易记录,但为了实现自动化,引入了智能合约。 写好智能合约之后呢? 在本文的以太坊智能合约教程中,我们将了解如何使用 Truffle Ethereum 和以太坊私有网络执行智能合约。
我们将在以太坊智能合约教程中查看以下主题:
用例:保险流程中的智能合约
区块链遵循“无中央权威”,这就是引入智能合约的原因。 但是你有没有想过如何使用智能合约? 因此,在以太坊智能合约的这一部分,我将解释智能合约在保险流程中的用例。
让我们考虑一个航班延误保险的例子。 假设你想从起点 A 飞到目的地 C,但你不直接飞。 因此,您决定通过 B 转机。现在,您的航线将从 A 到 B,然后从 B 到 C,其中 B 是机场,您将更改航班。 不幸的是,从A到B的航班和从B到C的航班之间的时间间隔并不多。所以,如果有任何问题,一旦从A到B的航班延误,那么你将错过从B到C的航班。知道对此,您可能需要航班延误保险以避免重大损失。
现在,如果您从 A 到 B 的航班延误(这将导致您错过从 B 到 C 的航班),您将获得保险金额。 这是正常的,如果您的航班延误,您可以申请保险。 然后,有人会核准保险,最后以太坊可以运行智能合约,你就会得到你的保险金额。 但这是一个漫长的过程。
您如何使用智能合约来改进保险流程?
说到金融交易,尤其是拿钱的时候,“越快越好”,不是吗? 那么,让我们看看智能合约如何增强保险流程。 智能合约是在满足特定条件时自动执行的数字合约。 如果航班延误,可以编写智能合约以向选择航班延误保险的人支付保险金额。 因此,当航班延误并且系统记录了这次延误时以太坊可以运行智能合约,保险会立即赔付。
好的! 保险金额在几秒钟内支付。 这就是智能合约如何简单快速地实施流程。
智能合约的好处
您已经在上面的示例中看到智能合约如何增强财务流程。 智能合约比快速交易有更多好处。 在这里,我列出了使用智能合约的其他一些好处:
现在我们知道了如何使用智能合约让世界变得更快,让我们开始动手学习这个以太坊智能合约教程。
安装先决条件
对于以太坊智能合约教程,我们需要 5 个重要的应用程序:
安装 Node.js
NodeJS 是一个用于构建服务器应用程序的 JavaScript 框架。 由于我们使用的是私有网络,因此 NodeJS 可以轻松构建网络应用程序。
要安装 Nodejs,请在终端中运行以下命令:
$ sudo apt-get install nodejs
安装 npm
NPM 代表节点包管理器,用于运行 Nodejs 应用程序。
要安装 NPM,请在终端中运行以下命令:
$ sudo apt-get install npm
安装以太坊
以太坊是一个开源和基于公共区块链的分布式计算平台,用于构建去中心化应用程序。
要安装以太坊,请在终端中运行以下命令:
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository -y ppa:ethereum/ethereum
$ sudo apt-get update
$ sudo apt-get install ethereum
安装松露
Truffle 是以太坊区块链的开发环境、测试框架和资产管道。
要安装 Truffle,请在终端中运行以下命令:
$ npm install -g truffle
安装 Solidity 编译器
Solidity 是一种用于编写智能合约的编程语言。 要在我们的系统上运行智能合约,我们必须安装 Solidity Compiler。
要安装 Solidity Compiler,请在终端中运行以下命令:
$ sudo npm install -g solc
配置创世块
Genesis Block 是区块链的起点,我们需要一个创世文件来启动区块链。 在以太坊智能合约的这一部分,我们将编写一个 Genesis 文件并配置它以允许我们运行智能合约。
让我们首先创建一个新目录,然后在该目录中创建 genesis 文件:
$ mkdir ethereum-network
$ cd ethereum-network
$ nano genesis.json
现在,在 genesis.json 文件中输入以下行:
{
"config": {
"chainId": 2019,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc": {},
"difficulty" : "200"
"gasLimit" : "99999999999999"
}
保存并退出。
运行以太坊私有网络
在本以太坊智能合约教程中,我们将在私有网络上部署以太坊智能合约。 所以要启动这个网络,我们将使用以下命令:
$ geth --datadir ./dataDir init ./genesis.json
图片
$ geth --port 4321 --networkid 1234 --datadir=./dataDir --rpc --rpcport 8543 --rpcaddr 127.0.0.1 --rpcapi "eth,net,web3,personal,miner"
图片
在继续之前,让我解释一下上述命令中使用的一些重要参数:
将 Geth 连接到以太坊私有区块链
Geth 控制台是我们可以与以太坊私有区块链进行交互的控制台。 要将 Geth 连接到以太坊私有区块链,请打开一个新终端并运行以下命令:
$ geth attach http://127.0.0.1:8543
图片
现在,我们在 Geth 控制台中,我们可以与区块链进行通信。
创建一个以太坊账户
要进行任何交易,我们需要一个帐户。 在以太坊智能合约教程的这一部分,我们将看到如何从 Geth 控制台创建一个新的以太坊账户。
按照到目前为止的步骤,我们已经在 Geth 控制台中了。 要创建新帐户,请在 Geth 控制台中运行以下命令:
> personal.newAccount('seedphrase')
将种子短语替换为此帐户所需的密码。
我们创建了一个新账户,但是这个账户没有以太币。 我们需要开始挖矿。 要开始挖矿,我们需要先解锁账户。 让我们解锁帐户并开始挖矿。
> personal.unlockAccount(web3.eth.coinbase, "seedphrase")
> miner.start()
图片
随着挖矿的继续进行,一些以太币将存入账户。
注意:这些以太币是虚拟以太币,没有实际价值。
要检查帐户中的以太币余额,我们将运行以下命令:
web3.fromWei(eth.getBalance(eth.coinbase), "ether")
当您定期运行此命令时,您会看到以太因挖矿而增加。
图片
要停止挖矿,请运行以下命令:
> miner.stop()
创建以太坊智能合约 创建 Truffle 项目
现在我们已经准备好私有区块链,我们将了解如何使用 Truffle 创建以太坊智能合约。 在本教程中,我们将创建一个简单的“Hello World”以太坊智能合约。
首先,让我们开始创建一个新目录来存储我们的 Truffle 项目。 然后在该目录中,我们将创建一个新的 Truffle 项目。 打开一个新终端并运行以下命令:
$ mkdir truffle
$ cd truffle
$ truffle init
图片
truffle init 命令将创建 Truffle 项目所需的所有必要文件。
现在我们已准备好部署以太坊智能合约,让我们编写一个“Hello World”智能合约。
编写“Hello World”智能合约
所有的合约都应该写在contracts目录下。 我们将切换到此目录并创建一个名为 HelloWorld.sol 的合约,并将以下行添加到此文件中:
pragma solidity ^0.4.15;
contract HelloWorld {
string public message;
function Hello() public{
message = "Hello World!";
}
}
就是这个! 但是这个智能合约不能单独执行。 我们将不得不为它做一些配置。
配置松露迁移
要迁移我们的智能合约,我们必须在 truffle 目录的 migrations 目录中添加一个文件。 在此目录中,我们将添加一个名为 2_deploy_contracts.js 的文件,其内容如下:
var HelloWorld = artifacts.require("./HelloWorld.sol");
module.exports = function(deployer) {
deployer.deploy(HelloWorld);
};
保存并退出。
要在我们的网络上运行 Truffle,我们需要编辑 truffle 目录中的 truffle.js 文件。 打开此文件并输入以下条目:
module.exports = {
rpc: {
host:"localhost",
port:8543
},
networks: {
development: {
host: "localhost",
port: 8543,
network_id: "*",
from: "0xfa2361236b5ac8079cb6cf250e5284922ed9ba9a",
gas: 20000000
}
}
};
注意:将发件人地址替换为您在上一步中创建的帐户的地址。
执行以太坊智能合约
在以太坊智能合约教程的最后一部分,我们将看到如何在我们的以太坊私有网络上部署我们的 Hello World 智能合约。
编译和部署智能合约
在我们执行智能合约之前,我们必须首先编译并将其部署到我们的以太坊私有网络。 我们将使用以下命令执行此操作:
$ truffle compile
图片
现在,我们必须解锁我们的帐户并开始挖矿。 使用 Geth 控制台返回终端并运行以下命令:
> personal.unlockAccount(web3.eth.coinbase)
> miner.start()
然后,返回到以 truffle 为当前工作目录的终端并运行以下命令:
$ truffle migrate
等待部署完成。
图片
在私有以太坊区块链上执行智能合约
要执行 Hello World 智能合约,我们必须进入 Truffle 控制台。 运行以下命令来执行此操作:
$ truffle console
您现在将进入 Truffle 控制台。 要执行智能合约,请运行以下命令:
> var first_contract
> HelloWorld.deployed().then(function(instance) { first_contract = instance; })
> dApp.message.call()
图片
恭喜! 您已经创建了您的第一个以太坊智能合约并执行了它。 我希望这个以太坊智能合约教程能提供有用的信息,并帮助您了解如何执行以太坊智能合约。 现在,继续尝试编写其他智能合约并执行它。
如果您想学习区块链并在区块链技术领域开创一番事业,那么请查看我们分享的一些与以太坊、比特币、EOS、Fabric 和其他区块链相关的交互式在线编程教程: