verbs-rs 0.4.1

Ethereum Agent based simulation library
Documentation
use alloy_sol_types::sol;

sol!(
    ABI,
    r#"[
        {
            "constant": true,
            "inputs": [],
            "name": "name",
            "outputs": [{"name": "", "type": "string"}],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [{"name": "spender", "type": "address"}, {"name": "tokens", "type": "uint256"}],
            "name": "approve",
            "outputs": [{"name": "success", "type": "bool"}],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "totalSupply",
            "outputs": [{"name": "", "type": "uint256"}],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [{"name": "from", "type": "address"},
            {"name": "to", "type": "address"},
            {"name": "tokens", "type": "uint256"}],
            "name": "transferFrom",
            "outputs": [{"name": "success", "type": "bool"}],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "decimals",
            "outputs": [{"name": "", "type": "uint8"}],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [],
            "name": "_totalSupply",
            "outputs": [{"name": "", "type": "uint256"}],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [{"name": "tokenOwner", "type": "address"}],
            "name": "balanceOf",
            "outputs": [{"name": "balance", "type": "uint256"}],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [{"name": "a", "type": "uint256"},
                {"name": "b", "type": "uint256"}],
            "name": "safeSub",
            "outputs": [{"name": "c", "type": "uint256"}],
            "payable": false,
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "constant": false,
            "inputs": [{"name": "to", "type": "address"},
                {"name": "tokens", "type": "uint256"}],
            "name": "transfer",
            "outputs": [{"name": "success", "type": "bool"}],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [{"name": "a", "type": "uint256"},
                {"name": "b", "type": "uint256"}],
            "name": "safeDiv",
            "outputs": [{"name": "c", "type": "uint256"}],
            "payable": false,
            "stateMutability": "pure",
            "type": "function"},
        {
            "constant": false,
            "inputs": [{"name": "spender", "type": "address"},
                {"name": "tokens", "type": "uint256"},
                {"name": "data", "type": "bytes"}],
            "name": "approveAndCall",
            "outputs": [{"name": "success", "type": "bool"}],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [{"name": "a", "type": "uint256"},
                {"name": "b", "type": "uint256"}],
            "name": "safeMul",
            "outputs": [{"name": "c", "type": "uint256"}],
            "payable": false,
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [{"name": "tokenOwner", "type": "address"},
                {"name": "spender", "type": "address"}],
            "name": "allowance",
            "outputs": [{"name": "remaining", "type": "uint256"}],
            "payable": false,
            "stateMutability": "view",
            "type": "function"
        },
        {
            "constant": true,
            "inputs": [{"name": "a", "type": "uint256"},
                {"name": "b", "type": "uint256"}],
            "name": "safeAdd",
            "outputs": [{"name": "c", "type": "uint256"}],
            "payable": false,
            "stateMutability": "pure",
            "type": "function"
        },
        {
            "inputs": [{"name": "total_supply", "type": "uint256"}],
            "payable": false,
            "stateMutability": "nonpayable",
            "type": "constructor"},
            {"payable": true, "stateMutability": "payable", "type": "fallback"},
            {"anonymous": false,
            "inputs": [{"indexed": true, "name": "from", "type": "address"},
                {"indexed": true, "name": "to", "type": "address"},
                {"indexed": false, "name": "tokens", "type": "uint256"}],
            "name": "Transfer",
            "type": "event"
        },
        {
            "anonymous": false,
            "inputs": [{"indexed": true, "name": "tokenOwner", "type": "address"},
                {"indexed": true, "name": "spender", "type": "address"},
                {"indexed": false, "name": "tokens", "type": "uint256"}],
            "name": "Approval",
            "type": "event"
        }
    ]
    "#
);

pub const BYTECODE: &str = "608060405234801561001057600080fd5b506040516020806111\
cf833981018060405281019080805190602001909291905050506040805190810160405280600581\
526020017f546f6b656e000000000000000000000000000000000000000000000000000000815250\
6000908051906020019061007e929190610156565b506002600160006101000a81548160ff021916\
908360ff16021790555080600281905550600254600360003373ffffffffffffffffffffffffffff\
ffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001\
600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffff\
ffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628\
f55a4df523b3ef6002546040518082815260200191505060405180910390a3506101fb565b828054\
600181600116156101000203166002900490600052602060002090601f016020900481019282601f\
1061019757805160ff19168380011785556101c5565b828001600101855582156101c5579182015b\
828111156101c45782518255916020019190600101906101a9565b5b5090506101d291906101d656\
5b5090565b6101f891905b808211156101f45760008160009055506001016101dc565b5090565b90\
565b610fc58061020a6000396000f3006080604052600436106100d0576000357c01000000000000\
00000000000000000000000000000000000000000000900463ffffffff16806306fdde03146100d5\
578063095ea7b31461016557806318160ddd146101ca57806323b872dd146101f5578063313ce567\
1461027a5780633eaaf86b146102ab57806370a08231146102d6578063a293d1e81461032d578063\
a9059cbb14610378578063b5931f7c146103dd578063cae9ca5114610428578063d05c78da146104\
d3578063dd62ed3e1461051e578063e6cb901314610595575b600080fd5b3480156100e157600080\
fd5b506100ea6105e0565b6040518080602001828103825283818151815260200191508051906020\
019080838360005b8381101561012a57808201518184015260208101905061010f565b5050505090\
5090810190601f1680156101575780820380516001836020036101000a031916815260200191505b\
509250505060405180910390f35b34801561017157600080fd5b506101b060048036038101908080\
3573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291\
9050505061067e565b604051808215151515815260200191505060405180910390f35b3480156101\
d657600080fd5b506101df610770565b6040518082815260200191505060405180910390f35b3480\
1561020157600080fd5b50610260600480360381019080803573ffffffffffffffffffffffffffff\
ffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690\
60200190929190803590602001909291905050506107bb565b604051808215151515815260200191\
505060405180910390f35b34801561028657600080fd5b5061028f610a4b565b604051808260ff16\
60ff16815260200191505060405180910390f35b3480156102b757600080fd5b506102c0610a5e56\
5b6040518082815260200191505060405180910390f35b3480156102e257600080fd5b5061031760\
0480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190\
505050610a64565b6040518082815260200191505060405180910390f35b34801561033957600080\
fd5b506103626004803603810190808035906020019092919080359060200190929190505050610a\
ad565b6040518082815260200191505060405180910390f35b34801561038457600080fd5b506103\
c3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092\
919080359060200190929190505050610ac9565b6040518082151515158152602001915050604051\
80910390f35b3480156103e957600080fd5b50610412600480360381019080803590602001909291\
9080359060200190929190505050610c52565b6040518082815260200191505060405180910390f3\
5b34801561043457600080fd5b506104b9600480360381019080803573ffffffffffffffffffffff\
ffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590\
602001908080601f0160208091040260200160405190810160405280939291908181526020018383\
808284378201915050505050509192919290505050610c76565b6040518082151515158152602001\
91505060405180910390f35b3480156104df57600080fd5b50610508600480360381019080803590\
6020019092919080359060200190929190505050610ec5565b604051808281526020019150506040\
5180910390f35b34801561052a57600080fd5b5061057f600480360381019080803573ffffffffff\
ffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffff\
ffffffffffffff169060200190929190505050610ef6565b60405180828152602001915050604051\
80910390f35b3480156105a157600080fd5b506105ca600480360381019080803590602001909291\
9080359060200190929190505050610f7d565b6040518082815260200191505060405180910390f3\
5b60008054600181600116156101000203166002900480601f016020809104026020016040519081\
01604052809291908181526020018280546001816001161561010002031660029004801561067657\
80601f1061064b57610100808354040283529160200191610676565b820191906000526020600020\
905b81548152906001019060200180831161065957829003601f168201915b505050505081565b60\
0081600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffff\
ffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffff\
ffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152\
602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffff\
ffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b229\
1e5b200ac8c7c3b925846040518082815260200191505060405180910390a3600190509291505056\
5b6000600360008073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffff\
ffffffffffffffffffffff1681526020019081526020016000205460025403905090565b60006108\
06600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffff\
ffffffffffffffffff1681526020019081526020016000205483610aad565b600360008673ffffff\
ffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16\
8152602001908152602001600020819055506108cf600460008673ffffffffffffffffffffffffff\
ffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020\
0160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffff\
ffffffffffffffffffff1681526020019081526020016000205483610aad565b600460008673ffff\
ffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff\
16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff16\
73ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550\
610998600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffff\
ffffffffffffffffffffff1681526020019081526020016000205483610f7d565b600360008573ff\
ffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffff\
ff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffff\
ffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc\
378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390\
a3600190509392505050565b600160009054906101000a900460ff1681565b60025481565b600060\
0360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffff\
ffffffffffffff168152602001908152602001600020549050919050565b6000828211151515610a\
be57600080fd5b818303905092915050565b6000610b14600360003373ffffffffffffffffffffff\
ffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152\
6020016000205483610aad565b600360003373ffffffffffffffffffffffffffffffffffffffff16\
73ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550\
610ba0600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffff\
ffffffffffffffffffffff1681526020019081526020016000205483610f7d565b600360008573ff\
ffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffff\
ff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffff\
ffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc\
378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390\
a36001905092915050565b60008082111515610c6257600080fd5b8183811515610c6d57fe5b0490\
5092915050565b600082600460003373ffffffffffffffffffffffffffffffffffffffff1673ffff\
ffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffff\
ffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16\
8152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff\
163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84\
f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a383\
73ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff\
167c0100000000000000000000000000000000000000000000000000000000028152600401808573\
ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffff\
ffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffff\
ffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260\
200191508051906020019080838360005b83811015610e5357808201518184015260208101905061\
0e38565b50505050905090810190601f168015610e805780820380516001836020036101000a0319\
16815260200191505b5095505050505050600060405180830381600087803b158015610ea2576000\
80fd5b505af1158015610eb6573d6000803e3d6000fd5b50505050600190509392505050565b6000\
81830290506000831480610ee55750818382811515610ee257fe5b04145b1515610ef057600080fd\
5b92915050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffff\
ffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffff\
ffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681\
5260200190815260200160002054905092915050565b60008183019050828110151515610f935760\
0080fd5b929150505600a165627a7a723058201cf23aed1bd6b0855bf9debb24de21f8a443422637\
9c5614c9dcc004a62d902e0029";