以太坊智能合約的發展在2018年呈指數級增長,2019年似乎將遵循這一趨勢。有些框架,如Truffle,可以幫助我們快速構建和維護智能合約,如果您想讓親自動手體驗的話,我將解釋如何編譯您的智能合約,并使用自己的腳本將其部署到以太坊網絡。
注意:我將使用簡單的智能合約,因為本文的目的只是展示如何編譯和部署腳本。
項目具有以下結構:
文件夾合同包含我們的智能合約。對于這篇文章,我們將使用兩個簡單的智能合約:
MyContractA.sol
MyContractA.sol
如您所見,我們有兩個文件,其中一個包含兩個智能合約,證明我們可以擁有任意數量的智能合約。
腳本編譯
現在,一旦我們有了初始項目結構和智能合約,就可以開始構建編譯腳本了。
聲音 | 瑞士聯邦委員會:現行金融法應適用于區塊鏈產業,但需進行調整:據cointelegraph報道,瑞士聯邦委員會(聯邦參議院)表示,該國現行的金融法適合區塊鏈行業,但需要進行具體調整。政府在12月14日公布的聯邦財政部(FDF)官方聲明中提出了幾項修正案。據悉,在12月7日的一次會議上,聯邦參議院通過了一份關于金融部門區塊鏈和分布式分類賬技術(DLT)法律框架的報告。具體而言,該報告建議為基于區塊鏈的金融市場基礎設施開發一個新的靈活授權類別。還主張為數字登記的權利持有人提供更好的法律清晰度,并確保去中心化的的交易平臺遵守反洗錢法(AML)。在報告通過后,聯邦參議院已指示FDF以及聯邦司法和警察局制定2019年第一季度的調整計劃。聯邦參議院還委托FDF研究是否應根據情況重新考慮洗錢法如何應用于某些類型的眾籌。[2018/12/15]
該腳本的目的是為每個合約生成一個JSON,每個JSON都包含已編譯的合同信息。這些JSON將存儲在名為build/的輸出路徑中
動態 | ONT與DVP合作創建區塊鏈安全漏洞共享平臺:據Bitcoin報道,Ontology(ONT)宣布與區塊鏈漏洞平臺DVP建立戰略合作伙伴關系,DVP將幫助ONT開發一個區塊鏈安全平臺和針對漏洞的開發者生態系統。[2018/11/8]
構建腳本的步驟如下:
創建構建/目錄。
獲取我們的合同來源。
編譯合同并將輸出寫入文件。
第1步-創建build/文件夾。
這一步是最簡單的,因為我們只需要了解JavaScript的一些基礎知識。
現在要將所有文件的來源都放到智能合約文件夾中。在這一步中,只需要JavaScript就不需要以太坊概念,但還是有點復雜。
對于contracts文件夾中的每個文件,我們在sources對象中添加一個新字段,其中鍵是文件名,值是.sol文件的內容。
聲音 | 證券日報:供應鏈金融成為金融機構布局區塊鏈的主戰場:據證券日報今日消息,在滬深兩市金融業類的87家上市公司中,有17家在半年報中著重提到了區塊鏈技術的研究成果,15家為銀行,占據絕大多數。其中,供應鏈金融成為與區塊鏈技術關聯次數最多的領域,成為金融機構布局區塊鏈的主戰場。供應鏈金融是落地成果最集中的領域,包括工商銀行、平安銀行、交通銀行、南京銀行、貴陽銀行等10余家金融機構均有涉及,其中含金量最高的服務平臺成為主力PK的重點,工商銀行的“工銀e信”、平安銀行的“供應鏈應收賬款服務平臺(SAS)”等都各有側重。[2018/9/7]
第3步-編譯并寫入輸出
現在我們已經有了輸出文件夾和智能合約的內容,是時候編譯它們了。
首先,我們必須定義一個對象,該對象將作為Solidity編譯器的信息輸入。
北京人大代表、91科技集團創始人許澤瑋:區塊鏈界應探討實際應用,而非動不動就探討生產關系:許澤瑋表示,現在應該考慮區塊鏈真正有效的應用,向公眾證明其有效性,哪怕這個應用是范圍有限甚至是有瑕疵的,而不是動不動就探討社會治理、生產關系,神化區塊鏈。這是非常不好的一個導向。許澤瑋還表示,去中心化不是去政府監管化,也不是去牌照化,去中心化應該體現在消息信息的孤島和信息連接上,讓所有信息都能夠自由的流動。[2018/3/9]
language:我們智能合約的編程語言,目前是使用Solidity,但你也可以選擇其他編程語言。
sources:我們合同的內容。
settings:此選項告訴編譯器我們想要生成哪些輸出字段。對于此示例,我選擇sources中的所有文件生成abi和evm.bytecode。這兩條信息是部署階段所必需的。
一旦我們有了編譯器的配置對象,我們就可以執行它了。
第一行獲取一個包含我們編譯的腳本的對象。兩個for循環允許我們在不同的JSON文件中存儲單個.sol文件中的智能合約。
最后一步是把這三部分連接在一起
這樣我們就完成了編譯腳本。如果我們運行它,項目結構應該如下所示:
我們已經gitignoredbuild文件夾,因為沒有意義在Git下跟蹤它。
現在我們已經編輯了我們的智能合約,是時候將它們部署到區塊鏈上了。
腳本部署
是時候將我們的智能合約部署到以太坊區塊鏈上了。
首先,我們需要兩件事來將智能合約部署到區塊鏈:
解鎖帳戶:由于我們需要使用gas來發送將創建智能合約的交易。
連接到區塊鏈的節點:我們正在向網絡發送交易,因此我們需要連接到鏈上。
關于第一點,我們將使用HDWalletProvider,這個工具允許我們使用助記符十二個單詞短語解鎖帳戶并連接到以太坊節點。但是......節點在哪里?好吧,我們可以做兩件事,運行我們自己的以太坊節點或使用Infura。Infura是一項服務,它允許我們連接到以太坊網絡,而無需運行我們自己的以太坊節點。所以,我們似乎已經涵蓋了兩點。
解鎖帳戶并連接到以太坊節點。
要使用Infura,我們需要在其頁面中注冊。它將生成我們需要使用其服務的API密鑰。
我們將使用Web3JS與區塊鏈進行交互。Web3需要提供程序來連接節點并與節點交互。這個提供程序是HDWalletProvider,我們來配置它和Web3。
HDWalletProvider的第一個參數是我們的12個單詞助記詞。這個短語允許提供者解鎖帳戶,第二個參數告訴提供者以太網節點在哪里,在這種情況下我們通過Infura連接。
最后我們在web3中設置了提供者。
通過正確配置web3,我們可以最終部署合同。
首先,我們需要我們編譯的腳本。
然后,在第8行中,我們使用Web3API創建智能合約,并將智能合約的接口傳遞給它。接下來,我們需要創建一個包含智能合約信息的部署事務:
data:合同的字節代碼。它以0x開頭表示它是十六進制的。
arguments:我們的智能合約構造函數的參數。
創建事務后,我們將其發送到以太坊區塊鏈,以便為節點處理它:
from:簽署交易并發送的帳戶。在第4行中,我們獲得了HDWalletProvider生成和解鎖的帳戶以及12個單詞短語。
gas:我們想要用于發送交易的最大gas量。
第18行的console.log對于獲取部署合同的地址很重要,這樣我們將來可以將其用于DAPP、用于其他合同等。
腳本的最后一行告訴提供程序結束與以太坊節點的連接。
如果我們執行腳本,一段時間后,我們將獲得如下跟蹤:
現在我們可以訪問EtherScan并查看我們在區塊鏈中部署的智能合約。
最后,我們已經部署了智能合約,并且每個人都可以訪問。我希望這篇文章有所幫助。
那邊廂由于交易慘淡,芝加哥期權交易所將于6月19日迎來最后一單比特幣期貨合約的交割,至此,CBOE加密貨幣期貨交易將正式關閉,退下歷史舞臺。這邊廂,等待上臺跳舞的候選者依然不少,進展也如火如荼.
1900/1/1 0:00:00今年對區塊鏈行業來說注定是關鍵的一年。我們不僅需要迎接Facebook等巨頭的進軍,另一方面,以太坊之后的第三代公鏈,包括Algorand、Polkadot、Nervos、Conflux等等,也.
1900/1/1 0:00:00Mcoin交易所,瓜分BTC0.1888枚重磅活動火熱進行中!Mcoin交易所的用戶們:感謝您長期以來對Mcoin交易所的持續關注與支持!Mcoin交易所舉辦的“瓜分BTC”活動已于2019年6.
1900/1/1 0:00:00在數字加密貨幣的世界里,一共存在兩種共識,這兩種共識也代表了兩種不同的投資心理。第一種共識是理性共識,第二種是非理性共識.
1900/1/1 0:00:00普通ATM機使用起來非常方便:插入銀行卡后,就可以取出現金。比特幣ATM機也應該遵循同樣的設計理念。科技會讓人們的生活變得更加便捷,但技術本身并不簡單.
1900/1/1 0:00:00從挖礦的歷史和產業成熟度看,PoW挖礦占據了絕對的話語權。但隨著Cosmos、Polkadot等熱門公鏈紛紛采用PoS機制,以太坊PoS時代Casper的上線進程日近,PoS的想象力已被大大拉升.
1900/1/1 0:00:00