使用Nethereum連接.NET和以太網區塊鏈智能合約
--
.NET是獨立和企業開發人員都喜歡的古老框架。選擇各種語言以及部署到從移動設備到服務器的各種平台的能力使.NET成為各種應用程序的絕佳選擇。雖然.NET做了很多,但它並沒有做任何事情。例如,無法編寫客戶端代碼以在.NET中的瀏覽器中運行(除非您使用Silverlight …),目前還沒有.NET支持的語言使開發人員能夠編寫智能合約。
智能合約的首選語言是Solidity。 Solidity是一種專門構建的語言,它承擔了運行它的環境的許多事情,它幾乎與區塊鏈技術相結合。這些假設反過來排除了其他語言。
智能合約本身雖然只是故事的一半。要使應用程序完整,智能合約需要通過RPC來調用它們。這就是Web3客戶端的用途. Web3客戶端只是提供客戶端界面,它使客戶端應用程序能夠與在以太坊上運行的智能合約進行交互,因此只要給定一個程式語言,它就可以與以太坊交互。
對於.NET來說,以太坊區塊鏈唯一的選擇是Nethereum。 (Nethereum是.NET和以太坊的混合體)。此庫試圖複製Web3.js以此提供相同功能,這些功能可用於JavaScript應用程序,就如在瀏覽器和NodeJS中運行的應用程序一樣。
在本教程中,我們將智能合約部署到Ganache,然後使用.NET核心創建一個簡單的.NET應用程序以與智能合約進行交互。
創建和部署智能合約
- 下載並安裝Ganache。 Ganache是一個用於進行以太坊開發的個人區塊鏈。
- 在終端(terminal),命令提示符(command prompt)或Powershell中,安裝Truffle。 Truffle是一個框架和一組實用程序,有助於促進智能合約的Solidity開發。 NPM需要完成這些命令。
npm install -g truffle
3. 創建一個文件夾並在該文件夾中運行truffle init
.
truffle init
4. Truffle將創建一些新文件夾:contract
,test
和migration
。在合同文件夾中,在contracts資料夾中創建一個名為Vote.sol的新文件。
5. 將以下代碼粘貼到新創建的Vote.sol中並保存文件。該合同只追踪2名候選人的投票數。合同使用郵件發件人(即帳戶地址)作為投票人。每個帳戶只允許1票。
pragma solidity ^0.5.0;
contract Vote {
uint public candidate1;
uint public candidate2;
mapping (address => bool) public voted; function castVote(uint candidate) public {
require(!voted[msg.sender] && (candidate == 1 || candidate == 2));
if(candidate == 1){
candidate1++;
}
else{
candidate2++;
}
voted[msg.sender] = true;
}
}
6. 在migrations
文件夾中創建一個新文件-2_vote.js
。
7. 在2_vote.js
文件中貼上以下代碼並保存。
var vote = artifacts.require("Vote");module.exports = function (deployer) {
// deployment steps
deployer.deploy(vote);
};
8. 在您創建的文件夾的根目錄中打開truffle-config.js
並粘貼以下代碼,然後保存該文件。這將Truffle配置為使用Ganache。
networks: {
ganache: {
host: "127.0.0.1",
port: 8545,
network_id: "*" // Match any…