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'>

거래 실패 디버깅