使用變數 z 表示的特定數字 Oraclize 一個 restfullAPI
您好,我使用由變數 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 控制台: 應用程序.js
元:
- 您應該編輯您的原始問題以包含您錯誤地發佈為回复的螢幕截圖。
- 您應該避免發布程式碼圖像,而是發布實際程式碼。無法從圖像中複製和粘貼程式碼,這使得回答者輸入回复的工作量更大。
回答:
您的問題是,在
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
變數,並將結果返回到span
html 中的餘額。筆記
Oraclize
查詢是非同步的,所以請確保在 Oraclize 查詢返回後refreshBalance
呼叫 javascript 函式,否則您的值將保留。0
編輯 - 回答後續問題:
該
sendCoin
功能應該已經工作,查看程式碼。然而,看看智能合約,沒有賬戶最終擁有任何代幣來發送任何代幣。該constructor
函式為部署者 ([msg.sender]
) 提供數量等於 的硬幣z
。然而合約以 開始z = 0
,所以∴msg.sender
也沒有。要糾正此問題,請更改以下行:
餘額
$$ msg.sender $$= z;
到:
餘額
$$ msg.sender $$= 1000000;
恭喜!
[msg.sender]
,在這種情況下是 Truffleaccount[0]
,擁有一百萬個 DVC!現在,當您send
在 DApp 中使用該功能時,您將有一些硬幣可以發送!