溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

以太坊智能合約怎么創(chuàng)建

發(fā)布時間:2021-12-29 14:09:24 來源:億速云 閱讀:359 作者:iii 欄目:互聯(lián)網(wǎng)科技

本篇內(nèi)容主要講解“以太坊智能合約怎么創(chuàng)建”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“以太坊智能合約怎么創(chuàng)建”吧!

使用案例:保險流程中的智能合約

區(qū)塊鏈遵循的是“沒有中央權(quán)力機構(gòu)”,這就是智能合約引入的原因。但你有沒有想過如何使用智能合約?那么,在以太坊智能合約的這一部分中,我將解釋保險流程中智能合約的使用案例。

讓我們考慮一個航班延誤保險的例子。假設(shè)你想要從出發(fā)地A到目的地C進行飛行,但你沒有直接飛行。那么,你決定通過B來轉(zhuǎn)機?,F(xiàn)在,你的路線將從A到B,然后從B到C,其中B是機場,你將更改航班。不幸的是,從A到B以及從B到C的航班之間沒有太大的時間差距。所以,如果有任何問題,一旦從A到B的航班延誤,那么你將錯過從B到C的航班。意識到這一點后,為了避免重大損失,你可能需要一個航班延誤保險。

現(xiàn)在,如果你從A到B的航班延誤(這將使你錯過從B到C的航班),你將獲得保險金額。這是正常的情況,如果你的航班延誤,你可以申請保險。然后,有人會核實并批準保險,最后,你將獲得你的保險金額。但這是一個漫長的過程。

你如何使用智能合約來改善保險流程?

談到金融交易,特別是當你拿錢時,“越快越好”,不是嗎?那么,讓我們看看智能合約如何加強保險流程。智能合約是數(shù)字合約,在滿足特定條件時自動執(zhí)行。如果航班延誤,可以編寫智能合約以向選擇航班延誤保險的人支付保險金額。因此,當航班延誤并且系統(tǒng)記錄此延遲時,保險將立即支付。

OK!保險金額在幾秒鐘內(nèi)支付。這就是智能合約如何簡單快速地實現(xiàn)流程。

智能合約的好處

你已在上面的示例中看到智能合約如何加強財務(wù)流程。除快速交易外,智能合約還有更多好處。在這里,我列出了使用智能合約的其他一些好處:

  • 自動化:智能合約自動執(zhí)行所有步驟。

  • 沒有中介:當你使用智能合約時,你不需要中介來完成工作,因為一切都將由智能合約處理。

  • 成本效益:使用智能合約可以節(jié)省銀行收取的交易費用和中介(如果有的話)的服務(wù)費用。

現(xiàn)在,我們知道如何使用智能合約來讓世界變得更快,讓我們親身體驗這個以太坊智能合約教程。

安裝先決條件

對于以太坊智能合約教程,我們需要5個重要的應(yīng)用程序:

  • NodeJS

  • NPM

  • Ethereum

  • Truffle

  • Solidity Compiler

安裝NodeJS

NodeJS是一個用于構(gòu)建服務(wù)器應(yīng)用程序的JavaScript框架。由于我們使用的是專用網(wǎng)絡(luò),因此NodeJS可以輕松構(gòu)建網(wǎng)絡(luò)應(yīng)用程序。

要安裝Nodejs,請在終端中運行以下命令:

$ sudo apt-get install nodejs
安裝NPM

NPM代表Node Package Manager,用于運行Nodejs應(yīng)用程序。

要安裝NPM,請在終端中運行以下命令:

$ sudo apt-get install npm
安裝以太坊

以太坊是一個基于開源和公共區(qū)塊鏈的分布式計算平臺,用于構(gòu)建去中心化應(yīng)用程序。

要安裝以太坊,請在終端中運行以下命令:

$ 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是以太坊Blokchains的開發(fā)環(huán)境,測試框架和資產(chǎn)管道。

要安裝Truffle,請在終端中運行以下命令:

$ npm install -g truffle
安裝Solidity Compiler

Solidity是一種用于編寫智能合約的編程語言。要在我們的系統(tǒng)上運行智能合約,我們必須安裝Solidity Compiler。

要安裝Solidity Compiler,請在終端中運行以下命令:

$ sudo npm install -g solc

配置Genesis Block

Genesis Block是Blockchain的起點,我們需要一個genesis文件來啟動Blockchain。在以太坊智能合約的這一部分中,我們將編寫一個Genesis文件并對其進行配置以允許我們運行智能合約。

讓我們首先創(chuàng)建一個新目錄,然后在該目錄中創(chuàng)建genesis文件:

$ mkdir ethereum-network
$ cd ethereum-network
$ nano genesis.json

現(xiàn)在,在genesis.json文件中輸入以下行:

{
"config": {
"chainId": 2019,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc": {},
"difficulty" : "200"
"gasLimit" : "99999999999999"
}

保存并退出。

運行以太坊專用網(wǎng)絡(luò)

在此Etheruem智能合約教程中,我們將在專用網(wǎng)絡(luò)上部署以太坊智能合約。因此,要啟動此網(wǎng)絡(luò),我們將使用以下命令:

$ geth --datadir ./dataDir init ./genesis.json

以太坊智能合約怎么創(chuàng)建

$ geth --port 4321 --networkid 1234 --datadir=./dataDir  --rpc --rpcport 8543 --rpcaddr 127.0.0.1  --rpcapi "eth,net,web3,personal,miner"

以太坊智能合約怎么創(chuàng)建

在進一步討論之前,讓我解釋一下上面命令中使用的一些重要參數(shù):

  • datadir:存儲與Blockchain相關(guān)的數(shù)據(jù)的目錄。

  • rpc:啟用HTTP-RPC服務(wù)器。

  • rpcport和rpcaddr分別用于設(shè)置網(wǎng)絡(luò)的端口和地址。

  • rpcapi:允許我們使用不同的API與以太坊網(wǎng)絡(luò)進行交互。

將Geth連接到以太坊私有區(qū)塊鏈

Geth控制臺是我們可以與以太坊私人區(qū)塊鏈互動的控制臺。要將Geth連接到以太坊私有區(qū)塊鏈,請打開一個新終端并運行以下命令:

$ geth attach http://127.0.0.1:8543

以太坊智能合約怎么創(chuàng)建

現(xiàn)在,我們在Geth控制臺中,我們可以與區(qū)塊鏈進行通信。

創(chuàng)建以太坊帳戶

要進行任何交易,我們需要一個帳戶。在以太坊的智能合約教程的這一部分中,我們將看到如何從Geth控制臺創(chuàng)建一個新的以太坊帳戶。

按照目前為止的步驟,我們已經(jīng)在Geth控制臺中。要創(chuàng)建新帳戶,請在Geth控制臺中運行以下命令:

> personal.newAccount('seedphrase')

seedphrase替換為你要為此帳戶設(shè)置的密碼。

我們創(chuàng)建了一個新帳戶,但此帳戶沒有ether。我們需要開始采礦。要開始挖掘,我們需要先解鎖帳戶。讓我們解鎖帳戶并開始挖掘。

> personal.unlockAccount(web3.eth.coinbase, "seedphrase")
> miner.start()

以太坊智能合約怎么創(chuàng)建

隨著采礦不斷發(fā)生,一些ether將被存入該賬戶。

注意:這些ether是虛擬ether,沒有實際價值。

要檢查帳戶中的ether余額,我們將運行以下命令:

web3.fromWei(eth.getBalance(eth.coinbase), "ether")

當你定期運行此命令時,你將看到由于采礦而導(dǎo)致ether增加。

以太坊智能合約怎么創(chuàng)建

要停止挖掘,請運行以下命令:

> miner.stop()

創(chuàng)建以太坊智能合約

創(chuàng)建松露項目

現(xiàn)在我們已經(jīng)準備好了我們的私人區(qū)塊鏈,我們將看到如何使用Truffle創(chuàng)建以太坊智能合約。在本教程中,我們將創(chuàng)建一個簡單的“Hello World”以太坊智能合約。

首先,讓我們首先創(chuàng)建一個新目錄來存儲Truffle項目。然后在該目錄中,我們將創(chuàng)建一個新的Truffle項目。打開一個新終端并運行以下命令:

$ mkdir truffle
$ cd truffle
$ truffle init

以太坊智能合約怎么創(chuàng)建

truffle init命令將創(chuàng)建Truffle項目所需的所有必要文件。

現(xiàn)在我們已準備好部署以太坊智能合約的所有內(nèi)容,讓我們編寫一個“Hello World”智能合約。

撰寫“Hello World”智能合約

所有合約都應(yīng)寫在contracts目錄中。 我們將切換到此目錄并創(chuàng)建名為HelloWorld.sol的合約,并在此文件中添加以下行:

pragma solidity ^0.4.15;
contract HelloWorld {
    string public message;
    function Hello() public{
    message = "Hello World!";
    }
}

就是這個!但是這個智能合約不能單獨執(zhí)行。我們將不得不為它做一些配置。

配置Truffle遷移

要遷移我們的智能合約,我們必須在truffle目錄的migrations目錄中添加一個文件。在這個目錄中,我們將添加一個名為2_deploy_contracts.js的文件,其中包含以下內(nèi)容:

var HelloWorld = artifacts.require("./HelloWorld.sol");
module.exports = function(deployer) {
   deployer.deploy(HelloWorld);
};

保存并退出。

要在我們的網(wǎng)絡(luò)上運行Truffle,我們需要編輯truffle目錄中的truffle.js文件。打開此文件并進行以下輸入:

module.exports = {
rpc: {
host:"localhost",
port:8543
},
networks: {
development: {
host: "localhost", 
port: 8543,
network_id: "*",
from: "0xfa2361236b5ac8079cb6cf250e5284922ed9ba9a",
gas: 20000000
}
}
};

注意:將from地址替換為你在上一步中創(chuàng)建的帳戶的地址。

執(zhí)行以太坊智能合約

在以太坊智能合約教程的最后一節(jié)中,我們將了解如何在我們的以太坊專用網(wǎng)絡(luò)上部署我們的Hello World智能合約。

編譯和部署智能合約

在我們執(zhí)行智能合約之前,我們必須首先將其編譯并部署到我們的以太坊專用網(wǎng)絡(luò)。我們將使用以下命令執(zhí)行此操作:

$ truffle compile

以太坊智能合約怎么創(chuàng)建

現(xiàn)在,我們必須解鎖我們的帳戶并開始挖掘。使用Geth控制臺返回終端并運行以下命令:

> personal.unlockAccount(web3.eth.coinbase)
> miner.start()

然后,返回到具有truffle作為當前工作目錄的終端并運行以下命令:

$ truffle migrate

等待部署完成。

以太坊智能合約怎么創(chuàng)建

在私有以太區(qū)區(qū)塊鏈上執(zhí)行智能合約

要執(zhí)行Hello World智能合約,我們必須進入Truffle控制臺。運行以下命令來執(zhí)行此操作:

$ truffle console

你現(xiàn)在將在Truffle控制臺。要執(zhí)行智能合約,請運行以下命令:

> var first_contract
> HelloWorld.deployed().then(function(instance) { first_contract = instance; })
> dApp.message.call()

以太坊智能合約怎么創(chuàng)建

到此,相信大家對“以太坊智能合約怎么創(chuàng)建”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI