TransactionReceipt
객체는 트랜잭션에 관한 정보와 디버깅을 돕는 다양한 메서드를 제공합니다.
**>>>** tx = Token[0].transfer(accounts[1], 1e18, {'from': accounts[0]})
Transaction sent: 0xa7616a96ef571f1791586f570017b37f4db9decb1a5f7888299a035653e8b44b
Token.transfer confirmed - block: 2 gas used: 51019 (33.78%)
**>>>** tx
<Transaction object '0xa7616a96ef571f1791586f570017b37f4db9decb1a5f7888299a035653e8b44b'>
트랜잭션에 대한 사람이 읽기 쉬운 정보를 보려면 TransactionReceipt.info
메서드를 호출하세요.
**>>>** tx.info()
Transaction was Mined
---------------------
Tx Hash: 0xa7616a96ef571f1791586f570017b37f4db9decb1a5f7888299a035653e8b44b
From: 0x4FE357AdBdB4C6C37164C54640851D6bff9296C8
To: 0xDd18d6475A7C71Ee33CEBE730a905DbBd89945a1
Value: 0
Function: Token.transfer
Block: 2
Gas Used: 51019 / 151019 (33.8%)
Events In This Transaction
--------------------------
Transfer
from: 0x4fe357adbdb4c6c37164c54640851d6bff9296c8
to: 0xfae9bc8a468ee0d8c84ec00c8345377710e0f0bb
value: 1000000000000000000
이벤트에 관한 데이터는 TransactionReceipt.events
로 사용 가능합니다. 이 데이터는 EventDict
객체에 저장되며, 딕셔너리와 리스트 모두의 특성을 지닌 하이브리드 컨테이너입니다.
<aside> 💡 되돌린 트랜잭션에서 발생한 이벤트를 볼 수도 있습니다. 디버깅할 때 실패한 트랜잭션 실행 중 지역 변수를 검사하기 위해 임시 이벤트를 만드는 것이 유용할 수 있습니다.
</aside>
**>>>** tx.events
{
'CountryModified': [
{
'country': 1,
'limits': (0, 0, 0, 0, 0, 0, 0, 0),
'minrating': 1,
'permitted': True
},
{
'country': 2,
'limits': (0, 0, 0, 0, 0, 0, 0, 0),
'minrating': 1,
'permitted': True
}
],
'MultiSigCallApproved': [
{
'callHash': "0x0013ae2e37373648c5161d81ca78d84e599f6207ad689693d6e5938c3ae4031d",
'callSignature': "0xa513efa4",
'caller': "0xF9c1fd2f0452FA1c60B15f29cA3250DfcB1081b9",
'id': "0x8be1198d7f1848ebeddb3f807146ce7d26e63d3b6715f27697428ddb52db9b63"
}
]
}
일련의 발생 순서가 중요하지 않은 경우 특정 이벤트를 조회하는 데 사용할 수 있는 사전입니다:
**>>>** len(tx.events)
3
**>>>** len(tx.events['CountryModified'])
2
**>>>** 'MultiSigCallApproved' in tx.events
True
**>>>** tx.events['MultiSigCallApproved']
{
'callHash': "0x0013ae2e37373648c5161d81ca78d84e599f6207ad689693d6e5938c3ae4031d",
'callSignature': "0xa513efa4",
'caller': "0xF9c1fd2f0452FA1c60B15f29cA3250DfcB1081b9",
'id': "0x8be1198d7f1848ebeddb3f807146ce7d26e63d3b6715f27697428ddb52db9b63"
}
시퀀스가 중요한 경우나 동일한 이벤트가 둘 이상 발생한 경우 목록으로 표시합니다:
*# name of the address*>>> tx.events[1].name
'CountryModified'
*# address where the event fired*>>> tx.events[1].address
"0xDd18d6475A7C71Ee33CEBE730a905DbBd89945a1"
>>> tx.events[1]
{
'country': 1,
'limits': (0, 0, 0, 0, 0, 0, 0, 0),
'minrating': 1,
'permitted': **True**}
TransactionReceipt.internal_transfers
은 트랜잭션 중 발생한 내부 이더 전송 목록을 제공합니다.
**>>>** tx.internal_transfers
[
{
"from": "0x79447c97b6543F6eFBC91613C655977806CB18b0",
"to": "0x21b42413bA931038f35e7A5224FaDb065d297Ba3",
"value": 100
}
]
TransactionReceipt.new_contracts
은 트랜잭션 중 생성된 새 계약 주소 목록을 제공합니다. 이는 팩토리 패턴을 사용할 때 유용합니다.
**>>>** deployer
<Deployer Contract object '0x5419710735c2D6c3e4db8F30EF2d361F70a4b380'>
**>>>** tx = deployer.deployNewContract()
Transaction sent: 0x6c3183e41670101c4ab5d732bfe385844815f67ae26d251c3bd175a28604da92
Gas price: 0.0 gwei Gas limit: 79781
Deployer.deployNewContract confirmed - Block: 4 Gas used: 79489 (99.63%)
**>>>** tx.new_contracts
["0x1262567B3e2e03f918875370636dE250f01C528c"]
이 목록에서 Contract
객체를 생성하려면 ContractContainer.at
을 사용하십시오:
**>>>** tx.new_contracts
["0x1262567B3e2e03f918875370636dE250f01C528c"]
**>>>** Token.at(tx.new_contracts[0])
<Token Contract object '0x1262567B3e2e03f918875370636dE250f01C528c'>