Truffle

使用變數 z 表示的特定數字 Oraclize 一個 restfullAPI

  • January 4, 2019

您好,我使用由變數 z 表示的特定數字(在本例中為 141)在本地主機上自己創建了一個 restfull API(python 文件 jsonify + localtunnel)。這個變數應該進入 DevCoin 函式餘額

$$ msg.sender $$並且應該在 localhost:8080 上顯示為:您有 141 DVC。為此,我使用了 ganache-cli (Listening on 127.0.0.1:8545) 、 ethereum-bridge(node bridge -a 9 -H 127.0.0.1 -p 8545 –dev) 以及 truffle.js (8545)。使用:truffle compile、truffle migrate –development –reset 和 npm run dev 不會導致錯誤。現在的問題是,當我將 index.html(應該顯示我的變數的位置)與 localhost:8545 上的元遮罩上的專用網路連接時,我得到:你有 0 個 DVC。我不知道為什麼。如果我通過而不是 za 號碼,則會顯示所選號碼。有人有什麼想法可以幫助我嗎?在此處輸入圖像描述 Truffle 控制台: 在此處輸入圖像描述在此處輸入圖像描述乙太坊橋“結果”:“141”休息API在此處輸入圖像描述 應用程序.js 在此處輸入圖像描述 在此處輸入圖像描述

松露.js 在此處輸入圖像描述

2_deploy_contracts.js 在此處輸入圖像描述

索引.html 在此處輸入圖像描述


元:

  • 您應該編輯您的原始問題以包含您錯誤地發佈為回复的螢幕截圖。
  • 您應該避免發布程式碼圖像,而是發布實際程式碼。無法從圖像中複製和粘貼程式碼,這使得回答者輸入回复的工作量更大。

回答:

您的問題是,在javascript刷新余額時,它正在查詢account[0]餘額*,*而您希望從智能合約中檢索z 值。

因此,要解決此問題,您有兩種選擇:

選項1:

  • 更改javascript以查詢智能合約中的z變數

選項 2:

  • 更改智能聯繫人以將Oraclize查詢結果分配為account[0].

程式碼:

選項 2的一個問題是您需要account[0]事先知道地址,並將其硬編碼到您的契約中。這並不理想,所以我們將選擇選項 1

 

找到refreshBalance函式App.js並更改行:

return dev.getBalance.call(account, {from: account});

讀書:

返回 dev.z.call();

現在它將查詢z變數,並將結果返回到spanhtml 中的餘額。

筆記

Oraclize查詢是非同步的,所以請確保在 Oraclize 查詢返回refreshBalance呼叫 javascript 函式,否則您的值將保留。0


編輯 - 回答後續問題:

sendCoin功能應該已經工作,查看程式碼。然而,看看智能合約,沒有賬戶最終擁有任何代幣來發送任何代幣。該constructor函式為部署者 ( [msg.sender]) 提供數量等於 的硬幣z。然而合約以 開始z = 0,所以∴msg.sender也沒有。

要糾正此問題,請更改以下行:

餘額

$$ msg.sender $$= z;

到:

餘額

$$ msg.sender $$= 1000000;

恭喜![msg.sender],在這種情況下是 Truffle account[0],擁有一百萬個 DVC!現在,當您send在 DApp 中使用該功能時,您將有一些硬幣可以發送!

引用自:https://ethereum.stackexchange.com/questions/64960