Method ID는 '함수명(매개변수타입)' 을 sha3를 돌려서 나온 결과값의 앞에서부터 4Byte 입니다.
이는 Dapp의 특정 메소드를 호출하고싶을 경우 Transaction을 발생 시 data에 넣어야하는 코드이며
아래는 이더스캔 Dapp호출 Transaction에 Input Data 예시 입니다.
방법1)
var sha_Method = web3.utils.sha3('함수명(매개변수타입)')
var methodId = sha_Method.substring(0,10)
*web3 v1.0
방법2)
var methodId = web3.eth.abi.encodeFunctionSignature("함수명(매개변수타입)")
( 예제 )
Solidity.sol
contract Exsample{
function TestName(address _test1, uint256 _test2) external {
require(address(0) != _test1);
(_test1);
(_test2);
}
}
Test.js
const Web3 = require('web3')
const infura_test = new Web3(Web3.givenProvider || new Web3.providers.WebsocketProvider("wss://ropsten.infura.io/ws"))
const web3 = infura_test
var sha_Method = web3.utils.sha3('TestName(address,uint256)')
var methodId = sha_Method.substring(0,10)
댓글 영역