본문으로 건너뛰기

caver.abi

caver.abi 패키지를 사용하면 ABI(애플리케이션 바이너리 인터페이스)로 파라미터를 디코딩하고 인코딩할 수 있습니다. 이는 배포된 스마트 컨트랙트의 함수를 호출하는 데 사용됩니다.

encodeFunctionSignature


caver.abi.encodeFunctionSignature(functionSignature)

함수 서명을 ABI 서명으로 인코딩하는데, 이는 매개변수 유형을 포함한 함수 이름의 sha3 해시 중 처음 4바이트입니다.

매개변수

이름유형설명
functionSignatureString | Object인코딩할 함수의 함수 서명 또는 JSON 인터페이스 객체입니다. 문자열인 경우 function(type, type,...) 형식이어야 합니다(예: myFunction(uint256,uint32[],bytes10,bytes)).

리턴 값

Type설명
string함수의 ABI 서명입니다.

예시


// From a JSON interface object
> caver.abi.encodeFunctionSignature({
name: 'myMethod',
type: 'function',
inputs: [{
type: 'uint256',
name: 'myNumber'
},{
type: 'string',
name: 'mystring'
}]
})
'0x24ee0097'
// From a function signature
> caver.abi.encodeFunctionSignature('myMethod(uint256,string)')
'0x24ee0097'

encodeEventSignature


caver.abi.encodeEventSignature(eventSignature)

이벤트 서명을 입력 매개변수 유형을 포함한 이벤트 이름의 sha3 해시인 ABI 서명으로 인코딩합니다.

매개변수

이름유형설명
eventSignatureString | Object인코딩할 이벤트의 이벤트 서명 또는 JSON 인터페이스 객체입니다. 문자열인 경우 event(type,type,...) 형식이어야 합니다(예: myEvent(uint256,uint32[],bytes10,bytes)

리턴 값

Type설명
string이벤트의 ABI 서명입니다.

예시


// From a JSON interface object
> caver.abi.encodeEventSignature({
name: 'myEvent',
type: 'event',
inputs: [{
type: 'uint256',
name: 'myNumber'
},{
type: 'bytes32',
name: 'myBytes'
}]
})
'0xf2eeb729e636a8cb783be044acf6b7b1e2c5863735b60d6daae84c366ee87d97'
// From an event signature
> caver.abi.encodeEventSignature('myEvent(uint256,bytes32)')
'0xf2eeb729e636a8cb783be044acf6b7b1e2c5863735b60d6daae84c366ee87d97'

encodeParameter


caver.abi.encodeParameter(type, parameter)

유형에 따라 매개변수를 ABI 표현으로 인코딩합니다.

매개변수

이름유형설명
typeString | Object매개변수의 유형, 유형 목록은 Solidity 문서를 참조하세요.
parameterMixed인코딩할 실제 매개변수입니다.

참고 tuple 타입은 caver-js v1.6.0 부터 지원됩니다. tuple 타입에 대한 자세한 내용은 Solidity 문서를 참고하시기 바랍니다.

리턴 값

Type설명
stringABI 인코딩된 매개변수입니다.

예시


> caver.abi.encodeParameter('uint256', '2345675643')
'0x000000000000000000000000000000000000000000000000000000008bd02b7b'
> caver.abi.encodeParameter('bytes32', caver.utils.rightPad('0xdf3234', 64))
'0xdf32340000000000000000000000000000000000000000000000000000000000'
> caver.abi.encodeParameter('bytes', '0xdf3234')
'0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003df32340000000000000000000000000000000000000000000000000000000000'
> caver.abi.encodeParameter('bytes32[]', [caver.utils.rightPad('0xdf3234', 64), caver.utils.rightPad('0xfdfd', 64)])
'0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000002df32340000000000000000000000000000000000000000000000000000000000fdfd000000000000000000000000000000000000000000000000000000000000'
> caver.abi.encodeParameter('tuple(bytes32,bool)', ['0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18', true])
'0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a180000000000000000000000000000000000000000000000000000000000000001'
> caver.abi.encodeParameter(
{
components: [{ name: 'a', type: 'bytes32' }, { name: 'b', type: 'bool' }],
name: 'tupleExample',
type: 'tuple',
},
['0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18', true]
)
'0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a180000000000000000000000000000000000000000000000000000000000000001'

encodeParameters


caver.abi.encodeParameters(typesArray, parameters)

JSON 인터페이스 객체를 기반으로 함수 매개변수를 인코딩합니다.

매개변수

이름유형설명
typesArrayArray | object타입이 있는 배열 또는 함수의 JSON 인터페이스입니다. 유형 목록은 Solidity 문서를 참조하세요.
parametersArray인코딩할 매개변수입니다.

참고 tuple 타입은 caver-js v1.6.0 부터 지원됩니다. tuple 타입에 대한 자세한 내용은 Solidity 문서를 참고하시기 바랍니다.

리턴 값

Type설명
stringABI 인코딩된 매개변수입니다.

예시


> caver.abi.encodeParameters(['uint256','string'], ['2345675643', 'Hello!%'])
'0x000000000000000000000000000000000000000000000000000000008bd02b7b0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000748656c6c6f212500000000000000000000000000000000000000000000000000'
> caver.abi.encodeParameters(['uint8[]','bytes32'], [['34','255'], caver.utils.rightPad('0x324567fff', 64)])
'0x0000000000000000000000000000000000000000000000000000000000000040324567fff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000ff'
> caver.abi.encodeParameters(
['tuple(bytes32,bool)', 'tuple(bool,address)'],
[
['0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18', true],
[true, '0x77656c636f6d6520746f20657468657265756d2e']
]
)
'0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a180000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000077656c636f6d6520746f20657468657265756d2e'
> caver.abi.encodeParameters(
[
{
components: [{ name: 'a', type: 'bytes32' }, { name: 'b', type: 'bool' }],
name: 'tupleExample',
type: 'tuple',
},
{
components: [{ name: 'c', type: 'bool' }, { name: 'd', type: 'address' }],
name: 'tupleExample2',
type: 'tuple',
},
],
[
['0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18', true],
[true, '0x77656c636f6d6520746f20657468657265756d2e']
]
)
'0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a180000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000077656c636f6d6520746f20657468657265756d2e'

encodeFunctionCall


caver.abi.encodeFunctionCall(jsonInterface, parameters)

JSON 인터페이스 객체와 지정된 매개변수를 사용하여 함수 호출을 인코딩합니다.

매개변수

이름Type설명
jsonInterfaceobject함수의 JSON 인터페이스 객체입니다.
parametersArray인코딩할 매개변수입니다.

리턴 값

Type설명
string함수 서명 + 매개 변수를 의미하는 ABI 인코딩된 함수 호출입니다.

예시


> caver.abi.encodeFunctionCall({
name: 'myMethod',
type: 'function',
inputs: [{
type: 'uint256',
name: 'myNumber'
},{
type: 'string',
name: 'mystring'
}]
}, ['2345675643', 'Hello!%'])
'0x24ee0097000000000000000000000000000000000000000000000000000000008bd02b7b0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000748656c6c6f212500000000000000000000000000000000000000000000000000'

decodeFunctionCall


caver.abi.decodeFunctionCall(abi, functionCall)

함수 또는 함수 abi 문자열의 abi 객체에서 함수 호출을 디코딩하고 매개 변수를 반환합니다.

참고 caver.abi.decodeFunctionCall은 caver-js v1.6.3 부터 지원됩니다.

매개변수

이름Type설명
abiobject함수의 abi 개체입니다.
functionCallstring인코딩된 함수 호출 문자열입니다.

리턴 값

Type설명
object일반 매개변수를 포함하는 개체입니다. 매개변수 순서대로 배열처럼 접근하도록 제공되므로 result[0]을 사용할 수 있습니다.

예시


> caver.abi.decodeFunctionCall({
name: 'myMethod',
type: 'function',
inputs: [{
type: 'uint256',
name: 'myNumber'
},{
type: 'string',
name: 'mystring'
}]
}, '0x24ee0097000000000000000000000000000000000000000000000000000000008bd02b7b0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000748656c6c6f212500000000000000000000000000000000000000000000000000')
Result {
'0': '2345675643',
'1': 'Hello!%',
__length__: 2,
myNumber: '2345675643',
mystring: 'Hello!%'
}

decodeParameter


caver.abi.decodeParameter(type, hexstring)

ABI로 인코딩된 매개변수를 해당 JavaScript 유형으로 디코딩합니다.

매개변수

이름Type설명
typeString | Object매개변수의 유형, 유형 목록은 Solidity 문서를 참조하세요.
hexstringArray디코딩할 ABI 바이트 코드입니다.

참고 tuple 타입은 caver-js v1.6.0 부터 지원됩니다. tuple 타입에 대한 자세한 내용은 Solidity 문서를 참고하시기 바랍니다.

리턴 값

Type설명
Mixed디코딩된 매개변수입니다.

예시


> caver.abi.decodeParameter('uint256', '0x0000000000000000000000000000000000000000000000000000000000000010')
'16'
> caver.abi.decodeParameter('string', '0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000848656c6c6f212521000000000000000000000000000000000000000000000000')
'Hello!%!'
> caver.abi.decodeParameter('tuple(bytes32,bool)', '0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a180000000000000000000000000000000000000000000000000000000000000001')
[ '0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18', true ]
> caver.abi.decodeParameter(
{
components: [{ name: 'a', type: 'bytes32' }, { name: 'b', type: 'bool' }],
name: 'tupleExample',
type: 'tuple',
},
'0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a180000000000000000000000000000000000000000000000000000000000000001'
)
[
'0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18',
true,
a: '0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18',
b: true
]

decodeParameters


caver.abi.decodeParameters(typesArray, hexstring)

ABI 인코딩된 매개변수를 해당 JavaScript 유형으로 디코딩합니다.

매개변수

이름Type설명
typesArrayArray | object유형이 있는 배열 또는 JSON 인터페이스 출력의 배열. 유형 목록은 Solidity 문서를 참조하세요.
hexstringstring디코딩할 ABI 바이트 코드입니다.

참고 tuple 타입은 caver-js v1.6.0 부터 지원됩니다. tuple 타입에 대한 자세한 내용은 Solidity 문서를 참고하시기 바랍니다.

리턴 값

Type설명
object디코딩된 매개변수가 포함된 결과 개체입니다.

예시


> caver.abi.decodeParameters(['string', 'uint256'], '0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000ea000000000000000000000000000000000000000000000000000000000000000848656c6c6f212521000000000000000000000000000000000000000000000000')
Result { '0': 'Hello!%!', '1': '234' }
> caver.abi.decodeParameters([{
type: 'string',
name: 'mystring'
},{
type: 'uint256',
name: 'myNumber'
}], '0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000ea000000000000000000000000000000000000000000000000000000000000000848656c6c6f212521000000000000000000000000000000000000000000000000')
Result {
'0': 'Hello!%!',
'1': '234',
mystring: 'Hello!%!',
myNumber: '234'
}
> caver.abi.decodeParameters(
['tuple(bytes32,bool)', 'tuple(bool,address)'],
'0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a180000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000077656c636f6d6520746f20657468657265756d2e'
)
Result {
'0': [ '0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18', true ],
'1': [ true, '0x77656c636f6d6520746F20657468657265756d2E' ],
}
> caver.abi.decodeParameters(
[
{
components: [{ name: 'a', type: 'bytes32' }, { name: 'b', type: 'bool' }],
name: 'tupleExample',
type: 'tuple',
},
{
components: [{ name: 'c', type: 'bool' }, { name: 'd', type: 'address' }],
name: 'tupleExample2',
type: 'tuple',
},
],
'0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a180000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000077656c636f6d6520746f20657468657265756d2e'
)
Result {
'0': [
'0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18',
true,
a: '0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18',
b: true
],
'1': [
true,
'0x77656c636f6d6520746F20657468657265756d2E',
c: true,
d: '0x77656c636f6d6520746F20657468657265756d2E'
],
tupleExample: [
'0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18',
true,
a: '0xabdef18710a18a18abdef18710a18a18abdef18710a18a18abdef18710a18a18',
b: true
],
tupleExample2: [
true,
'0x77656c636f6d6520746F20657468657265756d2E',
c: true,
d: '0x77656c636f6d6520746F20657468657265756d2E'
]
}

decodeLog


caver.abi.decodeLog(inputs, hexstring, topics)

ABI 인코딩된 로그 데이터와 인덱싱된 토픽 데이터를 디코딩합니다.

매개변수

이름Type설명
inputArrayJSON 인터페이스 입력값의 배열입니다. 유형 목록은 Solidity 문서를 참조하세요.
hexstringstring로그의 data 필드에 있는 ABI 바이트 코드입니다.
topicsArray로그의 인덱스 매개변수 주제 배열입니다. 이 배열은 익명이 아닌 이벤트인 경우 topic[0]을 갖지 않으며, 그렇지 않은 경우 topic[0]을 갖습니다.

리턴 값

Type설명
object디코딩된 로그가 포함된 결과 개체입니다.

예시


> caver.abi.decodeLog([{
type: 'string',
name: 'mystring'
},{
type: 'uint256',
name: 'myNumber',
indexed: true
},{
type: 'uint8',
name: 'mySmallNumber',
indexed: true
}],
'0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000748656c6c6f252100000000000000000000000000000000000000000000000000',
['0x000000000000000000000000000000000000000000000000000000000000f310', '0x0000000000000000000000000000000000000000000000000000000000000010'])
Result {
'0': 'Hello%!',
'1': '62224',
'2': '16',
mystring: 'Hello%!',
myNumber: '62224',
mySmallNumber: '16'
}

encodeContractDeploy


caver.abi.encodeContractDeploy(jsonInterface, hexstring [, params])

생성자의 인수를 사용하여 스마트 컨트랙트 바이트코드를 인코딩합니다.

매개변수

이름Type설명
jsonInterfaceArray컨트랙트의 JSON 인터페이스입니다.
hexstringstring배포할 스마트 컨트랙트의 바이트코드입니다.
paramsMixed(선택 사항) 생성자에게 전달할 인수입니다.

리턴 값

Type설명
string생성자 인수가 있는 ABI 인코딩된 스마트 컨트랙트 배포(byteCode + 매개변수를 의미)입니다.

예시


// There is no argument for constructor
> caver.abi.encodeContractDeploy([
{"constant": true, "inputs": [], "name": "count", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" },
{ "constant": true, "inputs": [], "name": "getBlockNumber", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" },
{ "constant": false, "inputs": [ { "name": "_count", "type": "uint256" } ], "name": "setCount", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }
],'0x60806040526000805534801561001457600080fd5b50610116806100246000396000f3006080604052600436106053576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306661abd14605857806342cbb15c146080578063d14e62b81460a8575b600080fd5b348015606357600080fd5b50606a60d2565b6040518082815260200191505060405180910390f35b348015608b57600080fd5b50609260d8565b6040518082815260200191505060405180910390f35b34801560b357600080fd5b5060d06004803603810190808035906020019092919050505060e0565b005b60005481565b600043905090565b80600081905550505600a165627a7a7230582064856de85a2706463526593b08dd790054536042ef66d3204018e6790a2208d10029')
'0x60806040526000805534801561001457600080fd5b50610116806100246000396000f3006080604052600436106053576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306661abd14605857806342cbb15c146080578063d14e62b81460a8575b600080fd5b348015606357600080fd5b50606a60d2565b6040518082815260200191505060405180910390f35b348015608b57600080fd5b50609260d8565b6040518082815260200191505060405180910390f35b34801560b357600080fd5b5060d06004803603810190808035906020019092919050505060e0565b005b60005481565b600043905090565b80600081905550505600a165627a7a7230582064856de85a2706463526593b08dd790054536042ef66d3204018e6790a2208d10029'
// There is one argument for constructor(uint256)
> caver.abi.encodeContractDeploy([
{ "constant": true, "inputs": [], "name": "count", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" },
{ "constant": true, "inputs": [], "name": "getBlockNumber", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" },
{ "constant": false, "inputs": [ { "name": "_count", "type": "uint256" } ], "name": "setCount", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" },
{ "inputs": [ { "name": "_a", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }
],'0x60806040526000805534801561001457600080fd5b5060405160208061015d8339810180604052810190808051906020019092919050505050610116806100476000396000f3006080604052600436106053576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306661abd14605857806342cbb15c146080578063d14e62b81460a8575b600080fd5b348015606357600080fd5b50606a60d2565b6040518082815260200191505060405180910390f35b348015608b57600080fd5b50609260d8565b6040518082815260200191505060405180910390f35b34801560b357600080fd5b5060d06004803603810190808035906020019092919050505060e0565b005b60005481565b600043905090565b80600081905550505600a165627a7a72305820ec774499bcdb89d9e570156a76249b33e99c766dfc6944e55aeeca316b41debf0029', 1)
'0x60806040526000805534801561001457600080fd5b5060405160208061015d8339810180604052810190808051906020019092919050505050610116806100476000396000f3006080604052600436106053576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306661abd14605857806342cbb15c146080578063d14e62b81460a8575b600080fd5b348015606357600080fd5b50606a60d2565b6040518082815260200191505060405180910390f35b348015608b57600080fd5b50609260d8565b6040518082815260200191505060405180910390f35b34801560b357600080fd5b5060d06004803603810190808035906020019092919050505060e0565b005b60005481565b600043905090565b80600081905550505600a165627a7a72305820ec774499bcdb89d9e570156a76249b33e99c766dfc6944e55aeeca316b41debf00290000000000000000000000000000000000000000000000000000000000000001'
// There are two arguments for constructor(uint256, uint256)
> caver.abi.encodeContractDeploy([
{ "constant": true, "inputs": [], "name": "count", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" },
{ "constant": true, "inputs": [], "name": "getBlockNumber", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" },
{ "constant": false, "inputs": [ { "name": "_count", "type": "uint256" } ], "name": "setCount", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" },
{ "inputs": [ { "name": "_a", "type": "uint256" }, { "name": "_b", "type": "uint256" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }
],'0x60806040526000805534801561001457600080fd5b5060405160408061016883398101806040528101908080519060200190929190805190602001909291905050505050610116806100526000396000f3006080604052600436106053576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306661abd14605857806342cbb15c146080578063d14e62b81460a8575b600080fd5b348015606357600080fd5b50606a60d2565b6040518082815260200191505060405180910390f35b348015608b57600080fd5b50609260d8565b6040518082815260200191505060405180910390f35b34801560b357600080fd5b5060d06004803603810190808035906020019092919050505060e0565b005b60005481565b600043905090565b80600081905550505600a165627a7a72305820f85b40d5ad70d0b3599200515915dca3074bcf609f27660845ecbfe882d3eeee0029', 1, 2)
'0x60806040526000805534801561001457600080fd5b5060405160408061016883398101806040528101908080519060200190929190805190602001909291905050505050610116806100526000396000f3006080604052600436106053576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306661abd14605857806342cbb15c146080578063d14e62b81460a8575b600080fd5b348015606357600080fd5b50606a60d2565b6040518082815260200191505060405180910390f35b348015608b57600080fd5b50609260d8565b6040518082815260200191505060405180910390f35b34801560b357600080fd5b5060d06004803603810190808035906020019092919050505060e0565b005b60005481565b600043905090565b80600081905550505600a165627a7a72305820f85b40d5ad70d0b3599200515915dca3074bcf609f27660845ecbfe882d3eeee002900000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000002'
// There is one argument for constructor(string)
> caver.abi.encodeContractDeploy([
{ "constant": true, "inputs": [], "name": "count", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" },
{ "constant": true, "inputs": [], "name": "getBlockNumber", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" },
{ "constant": false, "inputs": [ { "name": "_count", "type": "uint256" } ], "name": "setCount", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" },
{ "inputs": [ { "name": "_a", "type": "string" } ], "payable": false, "stateMutability": "nonpayable", "type": "constructor" }
],'0x60806040526000805534801561001457600080fd5b5060405161015d38038061015d8339810180604052810190808051820192919050505050610116806100476000396000f3006080604052600436106053576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306661abd14605857806342cbb15c146080578063d14e62b81460a8575b600080fd5b348015606357600080fd5b50606a60d2565b6040518082815260200191505060405180910390f35b348015608b57600080fd5b50609260d8565b6040518082815260200191505060405180910390f35b34801560b357600080fd5b5060d06004803603810190808035906020019092919050505060e0565b005b60005481565b600043905090565b80600081905550505600a165627a7a7230582082c35290d5a3c5f9ae552e0f638388cdc57d596a0973febe5de8eb9ee6df48a60029', 'stringParams')
'0x60806040526000805534801561001457600080fd5b5060405161015d38038061015d8339810180604052810190808051820192919050505050610116806100476000396000f3006080604052600436106053576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306661abd14605857806342cbb15c146080578063d14e62b81460a8575b600080fd5b348015606357600080fd5b50606a60d2565b6040518082815260200191505060405180910390f35b348015608b57600080fd5b50609260d8565b6040518082815260200191505060405180910390f35b34801560b357600080fd5b5060d06004803603810190808035906020019092919050505060e0565b005b60005481565b600043905090565b80600081905550505600a165627a7a7230582082c35290d5a3c5f9ae552e0f638388cdc57d596a0973febe5de8eb9ee6df48a600290000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c737472696e67506172616d730000000000000000000000000000000000000000'

Make this page better