主页 > imtoken钱包 > 以太坊智能合约如何执行智能合约?

以太坊智能合约如何执行智能合约?

imtoken钱包 2023-10-11 05:09:03

区块链技术在顶级技术中占据主导地位的主要原因是它的去中心化。 虽然区块链的主要目的是在没有中心的情况下维护交易记录,但为了实现自动化,引入了智能合约。 写好智能合约之后呢? 在本文的以太坊智能合约教程中,我们将了解如何使用 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 和其他区块链相关的交互式在线编程教程: