Go-Ethereum

使用輸入參數呼叫合約函式並從 Geth/Web3 傳遞乙太幣

  • January 24, 2019

我已經部署了一個智能合約,它基本上根據輸入的比率參數將傳入的資金分配到指定的地址。

請在下面找到程式碼:

pragma solidity ^0.4.23;

contract splitfund {

address admin;

constructor() public {

   admin = msg.sender;
}


function splitFunds(address[] withdrawaddress, uint[] proration) public payable {

   for(uint i = 0; i<withdrawaddress.length; i++) {
   withdrawaddress[i].transfer(proration[i] * msg.value/100);
   }
 }
}

現在,我想通過從一個地址傳遞 1 個乙太幣並以 60:40 的比例將其拆分並分別發送到地址 0x2e46E9A4542B28B39C21Ed859486147969CB949F 和 0x16292759f5e37144E37effe9Ef41998B1DfC5Df0 來訪問上述合約中的拆分資金功能。我能夠通過 Ropsten 測試網路中的 Remix 實現這一點(https://ropsten.etherscan.io/tx/0xf88696620eeb60cb64df6cedff2585ce65e5b6a3b0e896813394d920d0a133c5#internal

在此處輸入圖像描述

有人可以告訴我如何使用 Geth/Web3JS/Web3J 執行相同的操作嗎?!

這是以前在這裡

使用 truffle 將醜陋*的東西從你身上抽像出來: Web3 - 如何發送帶有一些數據的交易並同時包含 Ether?

使用 web3,您需要使用此方法並為您的數據欄位獲取“輸入”* 值(編碼方法簽名和將被呼叫的數據,查看螢幕截圖中的“輸入”0x969…)應該設置。從 remix 複製它(最簡單的方式,因為你已經擁有它)或自己計算它: https ://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethsendtransaction

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