[新手嚐鮮]使用Ganche和Truffle部屬合約並使用.Net Core溝通合約

使用Ganche和Truffle部屬合約與.Net Core串接溝通

參考網址:

掃文資訊

https://tw.saowen.com/a/672947e63778f1dbe0c5c8ea8c6e240866399399225046bb9bc089401a2877e1


 

1.安裝Ganache及Truffle

1. https://truffleframework.com/ganache

2. 我是Windows,所以使用PowerShell做安裝

npm install -g truffle

備註:如果沒有npm,請至node.js做安裝下載


2.建立合約與部屬合約

1.首先先在桌面建立一個資料夾,例如我就隨便輸入,這是空的資料夾喔


 

2.開啟PowerShell , cd到truffle_test資料夾

3.在這資料夾下輸入

truffle init

4.則會建立起truffle基本專案,之後我們回到truffle_test資料夾去找contracts資料夾

5.開始撰寫我們的智能合約 副檔名.sol

6.以下是我寫的相關合約,但錯了別怪我 , 在寫智能合約時,請注意truffle他們用的版本 , 所以我才參考他初始專案所使用的pragma

 也可以使用remix https://remix.ethereum.org 或是 ethfiddle https://ethfiddle.com/ 做驗證

deposit : 是我要打錢給這合約的方法

getAward: 是我希望前端給我地址,還有抽中的球,如果是1得到0.01 ether,以此類推

7. 之後存完檔後,請移駕去 migrations ,建立2_xxx.js

請輸入以下,這是我參考改寫的

var weiya = artifacts.require("weiya");

 module.exports = function(deployer) {
   // deployment steps
   deployer.deploy(weiya);
 };

8. 完成後,我們在回到上一層truffle_test資料夾,去尋找truffle-config.js

9.開啟他,並在他的底下去增加 , 與ganache對接

    ganache: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "*" // Match any network id
    }

 

10.完成後,請回到powershell , 輸入Truffle 指令 , ganache則是剛才truffle-config.js 所設定的network , 發佈智能合約

truffle deploy --reset --network ganache

11. 之後會產生出這當初寫的合約地址等 , 例如

而使用的地址耗費都是使用Ganache 第一個地址去做消耗


在此先暫停一下

1.如果將錢打進合約內

1.發佈完成合約地址後 , 前往https://remix.ethereum.org/ 網站

2.安裝 MetaMask , 並登入開啟

3.選擇右上角,並按下Custom RPC

4. 寫上你的RPC server , 在你的Ganache

5.儲存完成後,即可以跟他連接,並且可以import 一個Account進入

複製Ganache一個裡面的私鑰

6.完成後回到Remix網站 , 他會連接到你的metamask 對應的,並且連接到我們的Ganache , 在此輸入我們的合約地址

7.此時會跳出我們寫的方法,就可以利用這幾個來讓我們給合約錢,要給合約錢,我們才可以用合約發錢

8.當我改成 2 eth 發送,並且 按下 deposit

9. metamask會跳出一個付款選項 , 請確認付款

10. 同意後,即可完成合約打錢

11. 此時我們的 Ganache則會多增加一筆在blocks上

繼續回到主題


 

使用.Net Core與發佈上的智能合約串接

1. 首先建立 .net core Console 或是  .net core Web之類的

2.這邊使用nuget 安裝兩個套件 , 他似乎還有很多套件可以用

3.

string url = "HTTP://localhost:7545"; //RPC server
string address = "0xe024aB03be7b";//故意縮短的,這是合約地址
string ABI ="XXXXX";//這是合約上的ABI

暫停一下,在此又會有人不知道ABI

什麼是ABI?發行代幣也就是部署一個智能合約, 簡單來説ABI就是智能合約的API接口

要怎麼給

所以我們回到truffle_test資料夾,並且對contracts資料夾點擊右鍵,使用Visual Studio Code 開啟 , 記得安裝套件 solidity

安裝完成後,請針對你的sol檔案,按下 F1 , 並且輸入Solidity , 就可以Compile出一個bin資料夾 , 裡面有compile-all-output.json

請只要複製abi內的東西就好

這是我的VS 程式內部所寫

 

4.接著我們繼續 使用Web3連接並且連接合約

Web3 web3 = new Web3(url);
Contract voteContract = web3.Eth.GetContract(ABI, address);

5. 呼叫方法 並且給予gas value , gas value後面則是合約內方法的參數 , gas是上鏈需要用的燃料費才能上到鍊,Value則是我要給合約多少錢

6.即可以發送完成,會回傳string 回來,給予Hash

備註:剛有參考一些網站,有粗估合約所需gas 的方法,所以使用了以下

參考網址:​

https://hk.saowen.com/a/7e3950b5df5b2edcfa29044faa8a44ce83130a4177fe409c7331f69a0bfabfa3

https://gitter.im/Nethereum/Nethereum

https://github.com/Nethereum/Nethereum

https://nethereum.readthedocs.io/en/latest/Nethereum.Workbooks/docs/nethereum-smartcontrats-untyped/ 主要

https://github.com/Nethereum/Nethereum.Workbooks/blob/master/docs/nethereum-smartcontrats-untyped.workbook