使用松露部署合約時數值無效?但是如何在程式碼中修復它是 value 或 _amount 變數?我無法弄清楚
2_deploy_contracts.js
替換“OraclizeTest”
錯誤: *** 部署失敗 ***
“OraclizeTest” – 無效數值(arg="_amount", coderType=“uint256”, value={“from”:“0xb5Fb3E9BB73e742689F1001C519d6763a39A4Bc5”,“gas”:6721975,“value”:1000000000000000000})。
在 /root/.nvm/versions/node/v9.11.2/lib/node_modules/truffle/build/webpack:/packages/deployer/src/deployment.js:364:1 在 process._tickCallback (internal/process/next_tick .js:182:7) Truffle v5.1.8(核心:5.1.8)節點 v9.11.2
var OraclizeTest = artifacts.require("./OraclizeTest.sol"); module.exports = function(deployer, network, accounts) { // Deploys the OraclizeTest contract and funds it with 0.5 ETH // The contract needs a balance > 0 to communicate with Oraclize deployer.deploy( OraclizeTest, { from: accounts[9], gas:6721975, value: 1000000000000000000 }); };
contract OraclizeTest is usingOraclize { using strings for *; //strings import requirement // string public matchId; uint256 public amount; //remove url traces address public homeBet; address public awayBet; //string public ETHUSD; event LogInfo(string description); //getting from update function //event LogPriceUpdate(string price); //waiting for price in callback //then calling update function //event LogUpdate(address indexed _owner, uint indexed _balance); //getting from constructor // Constructor function OraclizeTest (uint _amount) public { //adding args and not matchid amount = _amount; // emit LogUpdate(owner, address(this).balance); //owner was in original // Replace the next line with your version: OAR = OraclizeAddrResolverI(0x6f485C8BF6fc43eA212E93BBF8ce046C7f1cb475); oraclize_setProof(proofType_TLSNotary | proofStorage_IPFS); update(); }
不不不。
上面接受的答案是不正確的,您接受它的事實意味著甚至沒有多少使用者會閱讀您的問題(更不用說嘗試回答它了)。
的整數值
1000000000000000000
確實大於Number.MAX_SAFE_INTEGER
,因此您應該使用"1000000000000000000"
or"1e18"
。但這不是錯誤消息告訴您的內容,因此建議的解決方案不會修復該錯誤。看看錯誤:
無效數值(arg="_amount", coderType=“uint256”, value={“from”:“0xb5Fb3E9BB73e742689F1001C519d6763a39A4Bc5”,“gas”:6721975,“value”:1000000000000000000})。
它非常明確地告訴您該函式需要一個數字值(您可以將其作為本機整數
Number
,表示整數的字元串,BigNumber
如果您在 web3.js v0.x 上則為對象,或者BN
如果您是對象) re on web3.js v1.x onward),但收到了這個:{ "from":"0xb5Fb3E9BB73e742689F1001C519d6763a39A4Bc5", "gas":6721975, "value":1000000000000000000 }
查看您嘗試呼叫的函式:
function OraclizeTest(uint _amount)
而且它確實需要一個 type 的輸入參數
uint
,您沒有將其傳遞給它。您傳遞的對像是 web3.js 允許您傳遞以提供交易詳細資訊的附加參數。這個對象必須是傳遞給任何函式的最後一個參數,當然,它並沒有在合約函式本身中明確說明(而是隱含的 via
msg
)。簡而言之,您對函式的呼叫
OraclizeTest
缺少輸入參數_amount
。