Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Andrew7234/contract accounts #428

Merged
merged 1 commit into from
Jun 7, 2023
Merged

Conversation

Andrew7234
Copy link
Collaborator

@Andrew7234 Andrew7234 commented May 25, 2023

Part of https://app.clickup.com/t/861mn8465

This PR adds the basic structure for contract account information when a runtime account address happens to also represent a smart contract.

Several fields; notably bytecode, abi, and verified are left empty or default to false currently. These fields will be populated by the evm tokens/contract analyzer in a future PR.

Testing:

Ran for ~2k blocks; successfully tested that contract accounts on both emerald and sapphire behave as expected:

curl "localhost:8008/v1/sapphire/accounts/oasis1qqhpkh73hpf5k5la7rvhvt6u8j5yak9qsc0ywt0j" | jq                                                                 andrewlow@Valinor
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1911  100  1911    0     0   169k      0 --:--:-- --:--:-- --:--:--  169k
{
  "address": "oasis1qqhpkh73hpf5k5la7rvhvt6u8j5yak9qsc0ywt0j",
  "address_preimage": {
    "address_data": "bo6eDbyk70pl68vkAy58Km+3xiM=",
    "context": "oasis-runtime-sdk/address: secp256k1eth",
    "context_version": 0
  },
  "balances": [],
  "evm_balances": [],
  "evm_contract": {
    "creation_bytecode": "omRib2R5o2Jwa1gg1D/duX4qsa76ocDBfl+pNrbwIgYONvnl1fNxtaifn2tkZGF0YVkEA2tM1udiXx/DNiEEcwhYyinuQc1P2U99FotPw3vIYDiXyQiD+HOHRzVVZ2at7Fsr8QfmSeLctDMVFij+BmJ/XHBpDTC4g0hIa+oxrSJgCL9sTGZUmu6MGbzI/4UFAZ9HgWgsS+MNJrrNEmi70gjJds2wWesXpPIai6XgepiKRjb3hgPmvBrElmEgUWbHnzQKoqrDaf+mFumtRjcUh3bYavhhEG4TXO/1DAyNlnFtqBUpZHHMyA9tEAImqEmFsjf0WvnrOfv5s68nMJiAeDcJ2kZQ/pRv+FwCbREJrI3b6fqjQ0Kin5MNutZOf4ljpEcK1sFRmFt1qcs3OEqtq2pfOkZ7ERN4PlcJ79YTIgsCKKl6BzcnC4hnH/jM3hxqGX20vVDyXeV8HsHqb6pOq7YpMNeMawghTwk+zgmt4VSNjuiciwOW2F44I1y+pEhOACDMjq7IPOc6IHNU2FbLXKlZsoN1NUaXbibm+L0/oPnKjjExgB8Kh0BEzinZhxymjmo21aplRwhOx8YKWrAdnttT0LVU7mYFzmBswJXm+dSDcGhQw91CGOyCJn+8ZS1tNow43Q66LpWrODglMgjHB0B/Jxh+pPPBqsFqUs0VjsnF1u4bx852k+NOcALe5Gkv1oK1x8DhwpGdsILHDH04Wz5ZAQh5EyVuCkKs8OT26Grez2L+ae8q9/6LqB4roFu/7ZeA68fV2+2NubsKP/VXIPwwabcsJ9895fX3nKFzEB32tbAOV2EG9BDAJzot34SQW7DcxgPUD5GvQ7cuyDAhKB4O4HXfY+qHrAQHpWIHzkUK7iC0jyyLsBESa59iLs3Wz2Ozsuv9YD+B9J6GAvqWgWQpKPtx8VZySFgVm7cHXHnPs9vyNfuDGAkiZTJJyrT5h4VZf91AzcMPByIvP/aUY5pJoSYxCJPrpToUQ6aHPMPBEJtq84o1j83r1MKs9jRA05LgwWl5FHAqG2SAAT9drJfUdPODAAKQrjUE3aqtC91i1abUN69J0Xe9K7Q+uIfMEaGUnXpshyqgNh6/CM+3yNAFg8It2C+8KqRS310ipB/dUwENXVGwESeGOiTpvShVI/gPQ4i2/yOK33AKGia9oQuM6oEVNzrnYhiH8pd0JU5RGGKpOqoI/TmeevF6aNpyfUv6Ts/JUSIVFiWZSc2rJkY8jAIDvLJHsuFqhBEqPl3OsGLOAqoYnpGgl9Uh0vjp63PreBxDjbwY9fQgNMJTNbT1iJFYPtRTVRd6fMZ2JhH42I5nhvwPNrgKxLxXrhcsbjDxmOqu7biv0UHmwG+HDBihPPwIN12A1TP1uUNQukUMuFTsAEShueGwoxsfOdBfdlIBHP2UCFO2casDE9pefAEsoZQepaplbm9uY2VPb+cteLwMi8n20c8iOmdsZmZvcm1hdAE=",
    "creation_tx": "b6e2d574bb06a0173ccdc853698193914bff2ece2219dc7f7ea2994e502f6bb1",
    "verified": false
  },
  "stats": {
    "num_txns": 1,
    "total_received": "0",
    "total_sent": "0"
  }
}

curl "localhost:8008/v1/emerald/accounts/oasis1qrrmuaed6numjju8gajzn68tn2edlvycjc50nfva" | jq                                                                  andrewlow@Valinor
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 26647    0 26647    0     0   650k      0 --:--:-- --:--:-- --:--:--  650k
{
  "address": "oasis1qrrmuaed6numjju8gajzn68tn2edlvycjc50nfva",
  "address_preimage": {
    "address_data": "B24PuerZ6QYiAXLs+xQ22MuJ6WY=",
    "context": "oasis-runtime-sdk/address: secp256k1eth",
    "context_version": 0
  },
  "balances": [],
  "evm_balances": [],
  "evm_contract": {
    "creation_bytecode": "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k5KRkGFIp1ZbYABgQFGAgwOBYACHgDsVgBVhBZJXYACA/VtQWvEVgBVhBaZXPWAAgD49YAD9W1BQUFBhBiqBhGAAgVGBEGEF6Fd/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W2AgAmAgAQFRhmADgVGBEGED/ld/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W1BQUFBQUFBQUFZbYACAYACDkFBgAIFz//////////////////////////8WYwgePtpgQFGBY/////8WYOAbgVJgBAFgIGBAUYCDA4GGgDsVgBVhBoVXYACA/VtQWvoVgBVhBplXPWAAgD49YAD9W1BQUFBgQFE9YB8ZYB+CARaCAYBgQFJQgQGQYQa9kZBhRHNWW5BQYABbgYEQFWEHh1dgAICEc///////////////////////////FmOfsIy3hGBAUYJj/////xZg4BuBUmAEAWEHBpGQYUiQVltgQIBRgIMDgYaAOxWAFWEHHVdgAID9W1Ba+hWAFWEHMVc9YACAPj1gAP1bUFBQUGBAUT1gHxlgH4IBFoIBgGBAUlCBAZBhB1WRkGFEi1ZbkJJQkFBhB2SHg2EZrlZbllBhB3CGgmEZrlZblVBQUICAYQd/kGFKRlZbkVBQYQbCVltQUFCRUJFWW2AAgZBQgHP//////////////////////////xZjuHLdDmBAUYFj/////xZg4BuBUmAEAWAAYEBRgIMDgWAAh4A7FYAVYQfcV2AAgP1bUFrxFYAVYQfwVz1gAIA+PWAA/VtQUFBQUFBWW2EIAGEZ/FZbc///////////////////////////FmEIHmEVP1Zbc///////////////////////////FhRhCHRXYEBRfwjDeaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgVJgBAFhCGuQYUfHVltgQFGAkQOQ/VthCH5gAGEaAFZbVluBgWAAgYEQYQi6V39OSHtxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAUmAyYARSYCRgAP1bkFBgIAIBNUOBEBVhCPtXYEBRfwjDeaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgVJgBAFh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AICMjISBgRBhE7pXf05Ie3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABSYDJgBFJgJGAA/VuQUGAgAgFgIIEBkGETz5GQYUFQVltz//////////////////////////8WYwkC8axgQFGBY/////8WYOAbgVJgBAFgYGBAUYCDA4GGgDsVgBVhFBRXYACA/VtQWvoVgBVhFChXPWAAgD49YAD9W1BQUFBgQFE9YB8ZYB+CARaCAYBgQFJQgQGQYRRMkZBhRCVWW1Bt//////////////////+RghaTUBaQUIGEYRRxhWACYUnCVluBUYEQYRSoV39OSHtxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAUmAyYARSYCRgAP1bYCCQgQKRkJEBAVKAhGEUwIVgAmFJwlZbYRTLkGABYUlxVluBUYEQYRUCV39OSHtxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAUmAyYARSYCRgAP1bYCACYCABAYGBUlBQUFCAgGEVG5BhSkZWW5FQUGETdVZbUGEVM4qKg4mJiYlhGnVWW1BQUFBQUFBQUFBWW2AAVHP//////////////////////////xaQVlthFWNhGfxWW3P//////////////////////////xZhFYFhFT9WW3P//////////////////////////xYUYRXOV2BAUX8Iw3mgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIFSYAQBYQhrkGFHx1Zbc///////////////////////////hBZhFe5XYACA/VtgAIRz//////////////////////////8WhISEYEBRYRYYkpGQYUTIVltgAGBAUYCDA4GFh1rxklBQUD2AYACBFGEWVVdgQFGRUGAfGWA/PQEWggFgQFI9glI9YABgIIQBPmEWWlZbYGCRUFtQUJBQgGEDXldgAID9W2EWcGEZ/FZbc///////////////////////////FmEWjmEVP1Zbc///////////////////////////FhRhFttXYEBRfwjDeaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgVJgBAFhCGuQYUfHVltz//////////////////////////+DFmEXsFdgQIBRYACAglJgIIIBkJJSc///////////////////////////hBaQg5BgQFFhFy2RkGFE2FZbYABgQFGAgwOBhYda8ZJQUFA9gGAAgRRhF2pXYEBRkVBgHxlgPz0BFoIBYEBSPYJSPWAAYCCEAT5hF29WW2BgkVBbUFCQUIBhF6pXYEBRfwjDeaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgVJgBAFhCGuQYUbrVltQYRe7VlthF7uDg4NhGIxWW1BQUFZbYRfIYRn8Vltz//////////////////////////8WYRfmYRU/Vltz//////////////////////////8WFGEYM1dgQFF/CMN5oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBUmAEAWEIa5BhR8dWW3P//////////////////////////4EWYRiAV2BAUX8Iw3mgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIFSYAQBYQhrkGFGIFZbYRiJgWEaAFZbUFZbYACAhHP//////////////////////////xZjqQWcu4WFYEBRYCQBYRi+kpGQYUUVVltgQFFgIIGDAwOBUpBgQFKQYOAbYCCCAYBRe/////////////////////////////////////+DgYMWF4NSUFBQUGBAUWEZDJGQYUTYVltgAGBAUYCDA4FgAIZa8ZFQUD2AYACBFGEZSVdgQFGRUGAfGWA/PQEWggFgQFI9glI9YABgIIQBPmEZTlZbYGCRUFtQkVCRUIGAFWEZeFdQgFEVgGEZeFdQgIBgIAGQUYEBkGEZeJGQYUQFVlthA15XYEBRfwjDeaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgVJgBAFhCGuQYUgzVltgAIJhGbuDgmFJcVZbkVCBEBVhGfZXYEBRfwjDeaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgVJgBAFhCGuQYUa0VluSkVBQVlszkFZbYACAVHP//////////////////////////4OBFn////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAIMWgReEVWBAUZGQkhaSg5F/i+AHnFMWWRQTRM0f0KTyhBlJf5cio9qv47QYb2tkV+CRkKNQUFZbYECAUWAEgIJSYKCCAZCSUmAA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////////////////////FoFSUFCMjGACgYEQYSHdV39OSHtxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAUmAyYARSYCRgAP1bkFBgIAIBYCCBAZBhIfKRkGFBUFZbhmACgVGBEGEiLFd/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W2AgAmAgAQGQc///////////////////////////FpCBc///////////////////////////FoFSUFCMjGADgYEQYSKgV39OSHtxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAUmAyYARSYCRgAP1bkFBgIAIBYCCBAZBhIrWRkGFBUFZbhmADgVGBEGEi71d/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W2AgAmAgAQGQc///////////////////////////FpCBc///////////////////////////FoFSUFBhKntWW4pgAIFRgRBhI2hXf05Ie3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABSYDJgBFJgJGAA/VtgIAJgIAEBUYVgBIFRgRBhI6pXf05Ie3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABSYDJgBFJgJGAA/VtgIAJgIAEBgYFSUJNQimABgVGBEGEj8Vd/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W2AgAmAgAQFRhWAFgVGBEGEkM1d/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W2AgAmAgAQGBgVJQklCKYAKBUYEQYSR6V39OSHtxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAUmAyYARSYCRgAP1bYCACYCABAVGFYAaBUYEQYSS8V39OSHtxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAUmAyYARSYCRgAP1bYCACYCABAYGBUlCRUIpgA4FRgRBhJQNXf05Ie3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABSYDJgBFJgJGAA/VtgIAJgIAEBUYVgB4FRgRBhJUVXf05Ie3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABSYDJgBFJgJGAA/VtgIAJgIAEBgYFSUJBQiYlgAIGBEGEljFd/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W5BQYCACATWFYAiBUYEQYSXNV39OSHtxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAUmAyYARSYCRgAP1bYCACYCABAYGBUlBQiYlgAYGBEGEmE1d/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W5BQYCACATWFYAmBUYEQYSZUV39OSHtxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAUmAyYARSYCRgAP1bYCACYCABAYGBUlBQiYlgAoGBEGEmmld/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W5BQYCACATWFYAqBUYEQYSbbV39OSHtxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAUmAyYARSYCRgAP1bYCACYCABAYGBUlBQiYlgA4GBEGEnIVd/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W5BQYCACATWFYAuBUYEQYSdiV39OSHtxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAUmAyYARSYCRgAP1bYCACYCABAYGBUlBQjIxgAIGBEGEnqFd/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W5BQYCACAWAggQGQYSe9kZBhQVBWW4ZgAIFRgRBhJ/dXf05Ie3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABSYDJgBFJgJGAA/VtgIAJgIAEBkHP//////////////////////////xaQgXP//////////////////////////xaBUlBQjIxgAYGBEGEoa1d/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W5BQYCACAWAggQGQYSiAkZBhQVBWW4ZgAYFRgRBhKLpXf05Ie3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABSYDJgBFJgJGAA/VtgIAJgIAEBkHP//////////////////////////xaQgXP//////////////////////////xaBUlBQjIxgAoGBEGEpLld/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W5BQYCACAWAggQGQYSlDkZBhQVBWW4ZgAoFRgRBhKX1Xf05Ie3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABSYDJgBFJgJGAA/VtgIAJgIAEBkHP//////////////////////////xaQgXP//////////////////////////xaBUlBQjIxgA4GBEGEp8Vd/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W5BQYCACAWAggQGQYSoGkZBhQVBWW4ZgA4FRgRBhKkBXf05Ie3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABSYDJgBFJgJGAA/VtgIAJgIAEBkHP//////////////////////////xaQgXP//////////////////////////xaBUlBQW2AAgGEqzIaGhoaOjmAEgYEQYSq/V39OSHtxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAUmAyYARSYCRgAP1bkFBgIAIBNYxhOJVWW5FQkVCBFWErI1dgAYdgAIFRgRBhKxJXf05Ie3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABSYDJgBFJgJGAA/VtgIAJgIAEBgYFSUFBhK2xWW2AAh2AAgVGBEGErX1d/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W2AgAmAgAQGBgVJQUFuAh2ABgVGBEGErp1d/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAFJgMmAEUmAkYAD9W2AgAmAgAQGBgVJQUFBQUFBQUIODYAKBgRBhK/NXf05Ie3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABSYDJgBFJgJGAA/VuQUGAgAgE1gWABgVGBEGEsNFd/Tkh7cQAAAAAAAAAAAAAAAAAAAAAA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UW3//////////////////4EWgRRhQCRXYACA/VtgAGAggoQDEhVhQWFXgIH9W4E1YT0ogWFK3VZbYACAYACAYGCFhwMSFWFBgVeCg/1bhDVhQYyBYUrdVluTUGAghQE1klBgQIUBNWf//////////4ERFWFBrleCg/1bYUG6h4KIAWFA8lZblZiUl1CVUFBQUFZbYACAYABgYISGAxIVYUHaV4KD/VuDNWFB5YFhSt1WW5JQYCCEATVhQfWBYUrdVluSlZKUUFBQYECRkJEBNZBWW2AAgGAAgGAAYICGiAMSFWFCHVeAgf1bhTVhQiiBYUrdVluUUGAghgE1k1BgQIYBNZJQYGCGATVn//////////+BERVhQlFXgYL9W2FCXYiCiQFhQPJWW5aZlZhQk5ZQkpSTklBQUFZbYACAYACAYACAYACAYICJiwMSFWFCiVeCg/1biDVn//////////+AghEVYUKgV4SF/VthQqyMg40BYUA0VluQmlCYUGAgiwE1kVCAghEVYULEV4SF/VthQtCMg40BYUA0VluQmFCWUGBAiwE1kVCAghEVYULoV4SF/VthQvSMg40BYUA0VluQllCUUGBgiwE1kVCAghEVYUMMV4OE/VtQYUMZi4KMAWFANFZbmZyYm1CWmVCUl5OWkpWUUFBQVltgAIBgAIBggIWHAxIVYUNCV4OE/VuENWf//////////4CCERVhQ1lXhYb9W4GHAZFQh2AfgwESYUNsV4WG/VuBNWAgYUN8YUCdg2FJTVZbgoFSgYEBkIWDAYOFAocBhAGNEBVhQ5hXiov9W4qWUFuEhxAVYUO6V4A1g1JgAZaQlgGVkYMBkYMBYUOcVltQmFBQiAE1klBQgIIRFWFD0FeEhf1bUGFD3YeCiAFhQH1WW5NQUGFD7GBAhgFhQClWW5FQYUP6YGCGAWFAKVZbkFCSlZGUUJJQVltgAGAggoQDEhVhRBZXgIH9W4FRgBUVgRRhPShXgYL9W2AAgGAAYGCEhgMSFWFEOVeAgf1bYURChGFBMlZbklBhRFBgIIUBYUEyVluRUGBAhAFRY/////+BFoEUYURoV4GC/VuAkVBQklCSUJJWW2AAYCCChAMSFWFEhFeAgf1bUFGRkFBWW2AAgGBAg4UDEhVhRJ1XgYL9W1BQgFFgIJCRAVGQkpCRUFZbc///////////////////////////FpBSVltgAIKEgzeRAZCBUpGQUFZbYACCUWFE6oGEYCCHAWFKFlZbkZCRAZKRUFBWW3P//////////////////////////5GQkRaBUmAgAZBWW3P//////////////////////////5KQkhaCUmAgggFSYEABkFZbYICAglKFUZCCAYGQUmAAkGAgkGCghAGQgokBhFuCgRAVYUV0V4FRhFKShAGSkIQBkGABAWFFWFZbUFBQg4EDgoUBUoZRgIJSh4MBkYMBkIRbgYEQFWFFvleDUXP//////////////////////////xaDUpKEAZKRhAGRYAEBYUWMVltQUICTUFBQUGFF02BAgwGFYUSuVlthReBgYIMBhGFErlZblZRQUFBQUFZbYCCAglJgFZCCAVJ/ZHMtbWF0aC1zdWItdW5kZXJmbG93AAAAAAAAAAAAAABgQIIBUmBgAZBWW2AggIJSYCaQggFSf093bmFibGU6IG5ldyBvd25lciBpcyB0aGUgemVybyBhYECCAVJ/ZGRyZXNzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgYIIBUmCAAZBWW2AggIJSYBSQggFSf2RzLW1hdGgtbXVsLW92ZXJmbG93AAAAAAAAAAAAAAAAYECCAVJgYAGQVltgIICCUmAUkIIBUn9kcy1tYXRoLWFkZC1vdmVyZmxvdwAAAAAAAAAAAAAAAGBAggFSYGABkFZbYCCAglJgE5CCAVJ/ZXRoIHRyYW5zZmVyIGVycm9yIAAAAAAAAAAAAAAAAABgQIIBUmBgAZBWW2AggIJSYBeQggFSf0FhYUxpYnJhcnk6IGFtb3VudEluPD0wAAAAAAAAAAAAYECCAVJgYAGQVltgIICCUmAJkIIBUn8yOkVYUElSRUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGBAggFSYGABkFZbYCCAglJgGpCCAVJ/RnVsbE1hdGg6IEZVTExESVZfT1ZFUkZMT1cAAAAAAABgQIIBUmBgAZBWW2AggIJSgYEBUn9Pd25hYmxlOiBjYWxsZXIgaXMgbm90IHRoZSBvd25lcmBAggFSYGABkFZbYCCAglJgGJCCAVJ/QWFhTGlicmFyeTogYW1vdW50T3V0PD0wAAAAAAAAAABgQIIBUmBgAZBWW2AggIJSYC2QggFSf1RyYW5zZmVySGVscGVyOjpzYWZlVHJhbnNmZXI6IHRyYECCAVJ/YW5zZmVyIGZhaWxlZAAAAAAAAAAAAAAAAAAAAAAAAABgYIIBUmCAAZBWW5CBUmAgAZBWW5GCUmAgggFSYEABkFZbYACFglKEYCCDAVJz//////////////////////////+EFmBAgwFSYIBgYIMBUoJRgGCAhAFSYUjugWCghQFgIIcBYUoWVltgHwF//////////////////////////////////////////+AWkZCRAWCgAZWUUFBQUFBWW2BAUYGBAWf//////////4ERgoIQFxVhSUVXYUlFYUquVltgQFKRkFBWW2AAZ///////////ghEVYUlnV2FJZ2FKrlZbUGAgkIECAZBWW2AAghmCERVhSYRXYUmEYUp/VltQAZBWW2AAgmFJvVd/Tkh7cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBUmASYARSYCSB/VtQBJBWW2AAgX///////////////////////////////////////////wSDEYIVFRYVYUn6V2FJ+mFKf1ZbUAKQVltgAIKCEBVhShFXYUoRYUp/VltQA5BWW2AAW4OBEBVhSjFXgYEBUYOCAVJgIAFhShlWW4OBERVhSkBXYACEhAFSW1BQUFBWW2AAf///////////////////////////////////////////ghQVYUp4V2FKeGFKf1ZbUGABAZBWW39OSHtxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAUmARYARSYCRgAP1bf05Ie3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYABSYEFgBFJgJGAA/Vtz//////////////////////////+BFoEUYRiJV2AAgP3+omRpcGZzWCISIBqfR30sZotpEk/Hp+O2r9pzmnXPpQ+NmBBZQmfw/YLKZHNvbGNDAAgAADM=",
    "creation_tx": "640cf83881464a7cbc3bb8bbd9af142b12b71f777d8414bfa7c2a12d4b7ae567",
    "verified": false
  },
  "stats": {
    "num_txns": 1,
    "total_received": "0",
    "total_sent": "0"
  }
}

Side note*: The additional fields are not currently included in the run.sh api test cases since there are no contract accounts within the first 100 blocks.. filing a ticket to expand this.

analyzer/runtime/extract.go Outdated Show resolved Hide resolved
analyzer/runtime/extract.go Outdated Show resolved Hide resolved
storage/migrations/02_runtimes.up.sql Show resolved Hide resolved
storage/migrations/02_runtimes.up.sql Outdated Show resolved Hide resolved
storage/migrations/02_runtimes.up.sql Show resolved Hide resolved
Copy link
Collaborator

@mitjat mitjat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!
LGTM since I'll be away next week (and, more importantly, since the PR is 90% there :)).
But please get @ptrus 's signoff too before merging.

api/spec/v1.yaml Outdated Show resolved Hide resolved
api/spec/v1.yaml Outdated Show resolved Hide resolved
api/spec/v1.yaml Outdated Show resolved Hide resolved
api/spec/v1.yaml Outdated Show resolved Hide resolved
api/spec/v1.yaml Outdated Show resolved Hide resolved
analyzer/runtime/extract.go Outdated Show resolved Hide resolved
storage/migrations/02_runtimes.up.sql Outdated Show resolved Hide resolved
storage/migrations/02_runtimes.up.sql Outdated Show resolved Hide resolved
storage/migrations/02_runtimes.up.sql Outdated Show resolved Hide resolved
creation_tx:
type: string
description: The Oasis cryptographic hash of the transaction that created the smart contract.
creation_bytecode:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to have a discussion thread:
Reminder that you said you'd up the number of rounds in the e2e regression test. Maybe 10k is good? It takes almost exactly 2min on my machine, which feels like a decent amount of time to me. Or maybe 5k.

Might be worth a separate PR (before this one goes in) just because of all the diff noise. Your call.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll update this in a follow-up PR - need to also add new contract accounts to query in the e2e tests

@Andrew7234 Andrew7234 force-pushed the andrew7234/contract-accounts branch from e3b2234 to f9cf4a2 Compare June 6, 2023 23:05
api/spec/v1.yaml Show resolved Hide resolved
@ptrus
Copy link
Member

ptrus commented Jun 7, 2023

Looks good to me now, thanks!

[analyzer] store contract address and tx

[openapi] add contract information to /runtime/accounts/{addr}

[api] add contract fields to /runtime/accounts/{addr}

[analyzer] store contract creation bytecode

[api] show contract creation bytecode

[db] add creation/runtime bytecode for evm contract accounts

nit

[db] standardize pkey format; remove evm contract fields

[openapi] address comments

address comments; simplify fields

fix bad rebase

linter

update description
@Andrew7234 Andrew7234 force-pushed the andrew7234/contract-accounts branch from c966425 to 7e2fa47 Compare June 7, 2023 15:35
@Andrew7234 Andrew7234 merged commit 3263819 into main Jun 7, 2023
6 checks passed
@Andrew7234 Andrew7234 deleted the andrew7234/contract-accounts branch June 7, 2023 15:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants