Your task is to create a REST API server that returns information for certain Ethereum transactions identified by their transaction hashes.
The server should handle a GET request on endpoint with path /lime/eth/:rlphex
.
It should have a single parameter rlphex
- a hexadecimal representation of RLP encoded list of transaction hashes (Example requests for the Goerli network are provided below). The server should return a response in the following format:
{
transactions: [
{ // List of information about transactions
transactionHash: string, // the hex encoded transaction hash of the transaction
transactionStatus: number, // the status of the transaction either 1 (success) or 0 (failure)
blockHash: string, // the hex encoding of the hash of the block the transaction was included in
blockNumber: number, // the number of the block the transaction was included in
from: string, // the etherum address of the transaction sender
to: string|null, // the etherum address of the transaction receiver or null when its a contract creation transaction.
contractAddress: string|null, // the etherum address of the newly created contract if this transaction is contract creation
logsCount: number, // number of log objects, which this transaction generated.
input: string, // the hex encoding of the data send along with the transaction.
value: string, // the value transferred in wei
},
{
...
}
]
}
Save the information for each transaction you’ve fetched from ethereum into a PostgreSQL database. Name the database postgres
Subsequent calls for this transaction identified by its hash should get the information from the database rather than the Ethereum node.
Important: Running the node should create the all the necessary the tables.
The server should handle a GET request at an endpoint named /lime/all
. It should have no required parameters and return a list of all transactions saved in the database. The response format should be the same as /lime/eth/:rlphex
.
The server should support the following environmental variables:
API_PORT
- the port where the API will be listening for requestsETH_NODE_URL
- url to an ethereum node that will be used for pollingDB_CONNECTION_URL
- url for connecting with your database
Any other environment variables you use should have default values and be optional!
The server should be run by the following command:
Rust: cargo run
Node.js: npm start
Golang: go run .
Java: gradle run
The server should be stopped by sending it a kill signal or Ctrl+C
.
Replace this readme with documentation of the project outlining:
- Architecture of the server - design decisions and overview
- How to run the server
- Requests and responses (with examples)
The following requests-response pairs are expected on the Ethereum Goerli network:
Request
curl -X GET http://127.0.0.1:{PORT}/lime/eth/f90110b842307839623266366133633265316165643263636366393262613636366332326430353361643064386135646137616131666435343737646364363537376234353234b842307835613537653330353163623932653264343832353135623037653762336431383531373232613734363534363537626436346131346333396361336639636632b842307837316239653262343464343034393863303861363239383866616337373664306561633062356239363133633337663966366639613462383838613862303537b842307863356639366266316235346433333134343235643233373962643737643765643465363434663763366538343961373438333230323862333238643464373938
Response
{
"transactions":[
{
"transactionHash":"0x9b2f6a3c2e1aed2cccf92ba666c22d053ad0d8a5da7aa1fd5477dcd6577b4524",
"transactionStatus":1,
"blockHash":"0x3ac55cb392661e0d2239267022dc30f32dc4767cdacfd3e342443122b87101d3",
"blockNumber":7976382,
"from":"0xb4d6a98aa8cd5396069c2818adf4ae1a0384b43a",
"to":null,
"contractAddress":"0x3664f6c1178e19bb775b597d6584caa3b88a1c35",
"input":"0x60806040523480156200001157600080fd5b506040518060400160405280600581526020017f4d794e46540000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4e4654000000000000000000000000000000000000000000000000000000000081525081600090816200008f919062000412565b508060019081620000a1919062000412565b505050620000c4620000b8620000ca60201b60201c565b620000d260201b60201c565b620004f9565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200021a57607f821691505b60208210810362000230576200022f620001d2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200029a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200025b565b620002a686836200025b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002f3620002ed620002e784620002be565b620002c8565b620002be565b9050919050565b6000819050919050565b6200030f83620002d2565b620003276200031e82620002fa565b84845462000268565b825550505050565b600090565b6200033e6200032f565b6200034b81848462000304565b505050565b5b8181101562000373576200036760008262000334565b60018101905062000351565b5050565b601f821115620003c2576200038c8162000236565b62000397846200024b565b81016020851015620003a7578190505b620003bf620003b6856200024b565b83018262000350565b50505b505050565b600082821c905092915050565b6000620003e760001984600802620003c7565b1980831691505092915050565b6000620004028383620003d4565b9150826002028217905092915050565b6200041d8262000198565b67ffffffffffffffff811115620004395762000438620001a3565b5b62000445825462000201565b6200045282828562000377565b600060209050601f8311600181146200048a576000841562000475578287015190505b620004818582620003f4565b865550620004f1565b601f1984166200049a8662000236565b60005b82811015620004c4578489015182556001820191506020850194506020810190506200049d565b86831015620004e45784890151620004e0601f891682620003d4565b8355505b6001600288020188555050505b505050505050565b612f6f80620005096000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde146102a4578063c87b56dd146102c0578063e985e9c5146102f0578063eacabe1414610320578063f2fde38b146103505761010b565b8063715018a6146102425780638da5cb5b1461024c57806395d89b411461026a578063a22cb465146102885761010b565b806323b872dd116100de57806323b872dd146101aa57806342842e0e146101c65780636352211e146101e257806370a08231146102125761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a60048036038101906101259190611cc9565b61036c565b6040516101379190611d11565b60405180910390f35b61014861044e565b6040516101559190611dbc565b60405180910390f35b61017860048036038101906101739190611e14565b6104e0565b6040516101859190611e82565b60405180910390f35b6101a860048036038101906101a39190611ec9565b610526565b005b6101c460048036038101906101bf9190611f09565b61063d565b005b6101e060048036038101906101db9190611f09565b61069d565b005b6101fc60048036038101906101f79190611e14565b6106bd565b6040516102099190611e82565b60405180910390f35b61022c60048036038101906102279190611f5c565b610743565b6040516102399190611f98565b60405180910390f35b61024a6107fa565b005b61025461080e565b6040516102619190611e82565b60405180910390f35b610272610838565b60405161027f9190611dbc565b60405180910390f35b6102a2600480360381019061029d9190611fdf565b6108ca565b005b6102be60048036038101906102b99190612154565b6108e0565b005b6102da60048036038101906102d59190611e14565b610942565b6040516102e79190611dbc565b60405180910390f35b61030a600480360381019061030591906121d7565b610a54565b6040516103179190611d11565b60405180910390f35b61033a600480360381019061033591906122b8565b610ae8565b6040516103479190611f98565b60405180910390f35b61036a60048036038101906103659190611f5c565b610b28565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061043757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610447575061044682610bab565b5b9050919050565b60606000805461045d90612343565b80601f016020809104026020016040519081016040528092919081815260200182805461048990612343565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505050905090565b60006104eb82610c15565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610531826106bd565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610598906123e6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105c0610c60565b73ffffffffffffffffffffffffffffffffffffffff1614806105ef57506105ee816105e9610c60565b610a54565b5b61062e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062590612478565b60405180910390fd5b6106388383610c68565b505050565b61064e610648610c60565b82610d21565b61068d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106849061250a565b60405180910390fd5b610698838383610db6565b505050565b6106b8838383604051806020016040528060008152506108e0565b505050565b6000806106c9836110af565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073190612576565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107aa90612608565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108026110ec565b61080c600061116a565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461084790612343565b80601f016020809104026020016040519081016040528092919081815260200182805461087390612343565b80156108c05780601f10610895576101008083540402835291602001916108c0565b820191906000526020600020905b8154815290600101906020018083116108a357829003601f168201915b5050505050905090565b6108dc6108d5610c60565b8383611230565b5050565b6108f16108eb610c60565b83610d21565b610930576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109279061250a565b60405180910390fd5b61093c8484848461139c565b50505050565b606061094d82610c15565b600060066000848152602001908152602001600020805461096d90612343565b80601f016020809104026020016040519081016040528092919081815260200182805461099990612343565b80156109e65780601f106109bb576101008083540402835291602001916109e6565b820191906000526020600020905b8154815290600101906020018083116109c957829003601f168201915b5050505050905060006109f76113f8565b90506000815103610a0c578192505050610a4f565b600082511115610a41578082604051602001610a29929190612664565b60405160208183030381529060405292505050610a4f565b610a4a8461140f565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000610af26110ec565b610afc6008611477565b6000610b08600861148d565b9050610b14848261149b565b610b1e81846116b8565b8091505092915050565b610b306110ec565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b96906126fa565b60405180910390fd5b610ba88161116a565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610c1e81611725565b610c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5490612576565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610cdb836106bd565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610d2d836106bd565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610d6f5750610d6e8185610a54565b5b80610dad57508373ffffffffffffffffffffffffffffffffffffffff16610d95846104e0565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610dd6826106bd565b73ffffffffffffffffffffffffffffffffffffffff1614610e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e239061278c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e929061281e565b60405180910390fd5b610ea88383836001611766565b8273ffffffffffffffffffffffffffffffffffffffff16610ec8826106bd565b73ffffffffffffffffffffffffffffffffffffffff1614610f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f159061278c565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46110aa838383600161188c565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6110f4610c60565b73ffffffffffffffffffffffffffffffffffffffff1661111261080e565b73ffffffffffffffffffffffffffffffffffffffff1614611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f9061288a565b60405180910390fd5b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361129e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611295906128f6565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161138f9190611d11565b60405180910390a3505050565b6113a7848484610db6565b6113b384848484611892565b6113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e990612988565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606061141a82610c15565b60006114246113f8565b90506000815111611444576040518060200160405280600081525061146f565b8061144e84611a19565b60405160200161145f929190612664565b6040516020818303038152906040525b915050919050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361150a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611501906129f4565b60405180910390fd5b61151381611725565b15611553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154a90612a60565b60405180910390fd5b611561600083836001611766565b61156a81611725565b156115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a190612a60565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46116b460008383600161188c565b5050565b6116c182611725565b611700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f790612af2565b60405180910390fd5b806006600084815260200190815260200160002090816117209190612cbe565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff16611747836110af565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600181111561188657600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146117fa5780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117f29190612dbf565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118855780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461187d9190612df3565b925050819055505b5b50505050565b50505050565b60006118b38473ffffffffffffffffffffffffffffffffffffffff16611ae7565b15611a0c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026118dc610c60565b8786866040518563ffffffff1660e01b81526004016118fe9493929190612e7c565b6020604051808303816000875af192505050801561193a57506040513d601f19601f820116820180604052508101906119379190612edd565b60015b6119bc573d806000811461196a576040519150601f19603f3d011682016040523d82523d6000602084013e61196f565b606091505b5060008151036119b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ab90612988565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611a11565b600190505b949350505050565b606060006001611a2884611b0a565b01905060008167ffffffffffffffff811115611a4757611a46612029565b5b6040519080825280601f01601f191660200182016040528015611a795781602001600182028036833780820191505090505b509050600082602001820190505b600115611adc578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611ad057611acf612f0a565b5b04945060008503611a87575b819350505050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611b68577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611b5e57611b5d612f0a565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611ba5576d04ee2d6d415b85acef81000000008381611b9b57611b9a612f0a565b5b0492506020810190505b662386f26fc100008310611bd457662386f26fc100008381611bca57611bc9612f0a565b5b0492506010810190505b6305f5e1008310611bfd576305f5e1008381611bf357611bf2612f0a565b5b0492506008810190505b6127108310611c22576127108381611c1857611c17612f0a565b5b0492506004810190505b60648310611c455760648381611c3b57611c3a612f0a565b5b0492506002810190505b600a8310611c54576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ca681611c71565b8114611cb157600080fd5b50565b600081359050611cc381611c9d565b92915050565b600060208284031215611cdf57611cde611c67565b5b6000611ced84828501611cb4565b91505092915050565b60008115159050919050565b611d0b81611cf6565b82525050565b6000602082019050611d266000830184611d02565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d66578082015181840152602081019050611d4b565b60008484015250505050565b6000601f19601f8301169050919050565b6000611d8e82611d2c565b611d988185611d37565b9350611da8818560208601611d48565b611db181611d72565b840191505092915050565b60006020820190508181036000830152611dd68184611d83565b905092915050565b6000819050919050565b611df181611dde565b8114611dfc57600080fd5b50565b600081359050611e0e81611de8565b92915050565b600060208284031215611e2a57611e29611c67565b5b6000611e3884828501611dff565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e6c82611e41565b9050919050565b611e7c81611e61565b82525050565b6000602082019050611e976000830184611e73565b92915050565b611ea681611e61565b8114611eb157600080fd5b50565b600081359050611ec381611e9d565b92915050565b60008060408385031215611ee057611edf611c67565b5b6000611eee85828601611eb4565b9250506020611eff85828601611dff565b9150509250929050565b600080600060608486031215611f2257611f21611c67565b5b6000611f3086828701611eb4565b9350506020611f4186828701611eb4565b9250506040611f5286828701611dff565b9150509250925092565b600060208284031215611f7257611f71611c67565b5b6000611f8084828501611eb4565b91505092915050565b611f9281611dde565b82525050565b6000602082019050611fad6000830184611f89565b92915050565b611fbc81611cf6565b8114611fc757600080fd5b50565b600081359050611fd981611fb3565b92915050565b60008060408385031215611ff657611ff5611c67565b5b600061200485828601611eb4565b925050602061201585828601611fca565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61206182611d72565b810181811067ffffffffffffffff821117156120805761207f612029565b5b80604052505050565b6000612093611c5d565b905061209f8282612058565b919050565b600067ffffffffffffffff8211156120bf576120be612029565b5b6120c882611d72565b9050602081019050919050565b82818337600083830152505050565b60006120f76120f2846120a4565b612089565b90508281526020810184848401111561211357612112612024565b5b61211e8482856120d5565b509392505050565b600082601f83011261213b5761213a61201f565b5b813561214b8482602086016120e4565b91505092915050565b6000806000806080858703121561216e5761216d611c67565b5b600061217c87828801611eb4565b945050602061218d87828801611eb4565b935050604061219e87828801611dff565b925050606085013567ffffffffffffffff8111156121bf576121be611c6c565b5b6121cb87828801612126565b91505092959194509250565b600080604083850312156121ee576121ed611c67565b5b60006121fc85828601611eb4565b925050602061220d85828601611eb4565b9150509250929050565b600067ffffffffffffffff82111561223257612231612029565b5b61223b82611d72565b9050602081019050919050565b600061225b61225684612217565b612089565b90508281526020810184848401111561227757612276612024565b5b6122828482856120d5565b509392505050565b600082601f83011261229f5761229e61201f565b5b81356122af848260208601612248565b91505092915050565b600080604083850312156122cf576122ce611c67565b5b60006122dd85828601611eb4565b925050602083013567ffffffffffffffff8111156122fe576122fd611c6c565b5b61230a8582860161228a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061235b57607f821691505b60208210810361236e5761236d612314565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006123d0602183611d37565b91506123db82612374565b604082019050919050565b600060208201905081810360008301526123ff816123c3565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612462603d83611d37565b915061246d82612406565b604082019050919050565b6000602082019050818103600083015261249181612455565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006124f4602d83611d37565b91506124ff82612498565b604082019050919050565b60006020820190508181036000830152612523816124e7565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612560601883611d37565b915061256b8261252a565b602082019050919050565b6000602082019050818103600083015261258f81612553565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006125f2602983611d37565b91506125fd82612596565b604082019050919050565b60006020820190508181036000830152612621816125e5565b9050919050565b600081905092915050565b600061263e82611d2c565b6126488185612628565b9350612658818560208601611d48565b80840191505092915050565b60006126708285612633565b915061267c8284612633565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006126e4602683611d37565b91506126ef82612688565b604082019050919050565b60006020820190508181036000830152612713816126d7565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612776602583611d37565b91506127818261271a565b604082019050919050565b600060208201905081810360008301526127a581612769565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612808602483611d37565b9150612813826127ac565b604082019050919050565b60006020820190508181036000830152612837816127fb565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612874602083611d37565b915061287f8261283e565b602082019050919050565b600060208201905081810360008301526128a381612867565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006128e0601983611d37565b91506128eb826128aa565b602082019050919050565b6000602082019050818103600083015261290f816128d3565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000612972603283611d37565b915061297d82612916565b604082019050919050565b600060208201905081810360008301526129a181612965565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006129de602083611d37565b91506129e9826129a8565b602082019050919050565b60006020820190508181036000830152612a0d816129d1565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000612a4a601c83611d37565b9150612a5582612a14565b602082019050919050565b60006020820190508181036000830152612a7981612a3d565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000612adc602e83611d37565b9150612ae782612a80565b604082019050919050565b60006020820190508181036000830152612b0b81612acf565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612b747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612b37565b612b7e8683612b37565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612bbb612bb6612bb184611dde565b612b96565b611dde565b9050919050565b6000819050919050565b612bd583612ba0565b612be9612be182612bc2565b848454612b44565b825550505050565b600090565b612bfe612bf1565b612c09818484612bcc565b505050565b5b81811015612c2d57612c22600082612bf6565b600181019050612c0f565b5050565b601f821115612c7257612c4381612b12565b612c4c84612b27565b81016020851015612c5b578190505b612c6f612c6785612b27565b830182612c0e565b50505b505050565b600082821c905092915050565b6000612c9560001984600802612c77565b1980831691505092915050565b6000612cae8383612c84565b9150826002028217905092915050565b612cc782611d2c565b67ffffffffffffffff811115612ce057612cdf612029565b5b612cea8254612343565b612cf5828285612c31565b600060209050601f831160018114612d285760008415612d16578287015190505b612d208582612ca2565b865550612d88565b601f198416612d3686612b12565b60005b82811015612d5e57848901518255600182019150602085019450602081019050612d39565b86831015612d7b5784890151612d77601f891682612c84565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612dca82611dde565b9150612dd583611dde565b9250828203905081811115612ded57612dec612d90565b5b92915050565b6000612dfe82611dde565b9150612e0983611dde565b9250828201905080821115612e2157612e20612d90565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000612e4e82612e27565b612e588185612e32565b9350612e68818560208601611d48565b612e7181611d72565b840191505092915050565b6000608082019050612e916000830187611e73565b612e9e6020830186611e73565b612eab6040830185611f89565b8181036060830152612ebd8184612e43565b905095945050505050565b600081519050612ed781611c9d565b92915050565b600060208284031215612ef357612ef2611c67565b5b6000612f0184828501612ec8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220a432e54b5888b7b0fdda6c58dcfd2aec166bc9bdd49fdf7684f02fc38b8f171e64736f6c63430008110033",
"value":"0"
},
{
"transactionHash":"0x5a57e3051cb92e2d482515b07e7b3d1851722a74654657bd64a14c39ca3f9cf2",
"transactionStatus":1,
"blockHash":"0x92557f7e29c39cae6be013ffc817620fcd5233b68405cdfc6e0b5528261e81e5",
"blockNumber":7976373,
"from":"0xf29a6c0f8ee500dc87d0d4eb8b26a6fac7a76767",
"to":"0xb0428bf0d49eb5c2239a815b43e59e124b84e303",
"contractAddress":null,
"logsCount":0,
"input":"0x",
"value":"50000000000000000"
},
{
"transactionHash":"0x71b9e2b44d40498c08a62988fac776d0eac0b5b9613c37f9f6f9a4b888a8b057",
"transactionStatus":1,
"blockHash":"0x32edca7a39d0b1fc3d19fd1487c3c69beadad7cdcd5e5f1c9e815e7d1c460a0d",
"blockNumber":7957369,
"from":"0x22ba753ca065d65d4d0b9f4fac7a669746175199",
"to":"0x14cb06e8de2222912138f9a062e5a4d9f4821409",
"contractAddress":null,
"logsCount":3,
"input":"0x95297e24a8d61b73377cdc07fcf0cdd5473a1c81d541d3bcbbac29dd02d9f680af901d705591dba920dde33e5f1043c1b84106b0f223e7b954b17bde9ffe62206b583b2d00000000000000000000000000000000000000000000000000000000000021d300eea48906338871c59f0d12348b85c66461cd8c9e80faa4d3e63b134279595a159d3bfa16088686ea5b2406f82109b60a5792b77bc173106c01f0fbfed6598905d63c4ca36d0740e427d53ea8d1cc707b15a846c854a14b2e3b2e30ce129b8721a54e650d0e077cf260d8c3c84a431b287bd35ffe4c03c27a19d9a0d3320ae905a76cdd5a8bfeffa1c837279d67654e053a8e80cf2e581968a93bf827c3cf702d8c881054165ebd6d1ebea052f9af3a10338c9314ed99609735b8b76fe274c411d32840d8a1f85b51ee84bd2b0d70fe5725362406ac200a1186ea82ae39731a05d84408b5eca5130fa799aa898bbb2132054dcd8890ff004ac855f57c813fc6",
"value":"0"
},
{
"transactionHash":"0xc5f96bf1b54d3314425d2379bd77d7ed4e644f7c6e849a74832028b328d4d798",
"transactionStatus":0,
"blockHash":"0x3ac55cb392661e0d2239267022dc30f32dc4767cdacfd3e342443122b87101d3",
"blockNumber":7976382,
"from":"0x58fa6ab2931b73a22d85617125b936bd3f74e765",
"to":"0x302fd86163cb9ad5533b3952dafa3b633a82bc51",
"contractAddress":null,
"logsCount":0,
"input":"0x97da873c0000000000000000000000000000000000000000000000056bc75e2d63100000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000058fa6ab2931b73a22d85617125b936bd3f74e76512d1a55b318c0be714e7ce8bc54a96ac48813cfcb73cbaa0a6e933fa9a35b7bb212c8f9a45c4430a6fa3cb8b67a28403c51e494615df4f826280256a8ddabde630818902818100e4dcd34866228be9255cbd322590b92ded49868321f0535734587348c4cb450d2d68367f686faa4688410662e9f38dc62a742f71d8e81b40a3c444381ee1245024467c8f29f04f0f83059dee234f1d4ab13e536eb5958adf91782ed3495b36fd5db6e76626771d998d6e4c75eceb58e1c783b33920dcd7723fbfbc33ba6d5ff902030100010000000000000000000000000000000000000000",
"value":"1265249737905771"
}
]
}
curl -X GET http://127.0.0.1:{PORT}/lime/all
{
"transactions":[
{
"transactionHash":"0x9b2f6a3c2e1aed2cccf92ba666c22d053ad0d8a5da7aa1fd5477dcd6577b4524",
"transactionStatus":1,
"blockHash":"0x3ac55cb392661e0d2239267022dc30f32dc4767cdacfd3e342443122b87101d3",
"blockNumber":7976382,
"from":"0xb4d6a98aa8cd5396069c2818adf4ae1a0384b43a",
"to":null,
"contractAddress":"0x3664f6c1178e19bb775b597d6584caa3b88a1c35",
"logsCount":1,
"input":"0x60806040523480156200001157600080fd5b506040518060400160405280600581526020017f4d794e46540000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4e4654000000000000000000000000000000000000000000000000000000000081525081600090816200008f919062000412565b508060019081620000a1919062000412565b505050620000c4620000b8620000ca60201b60201c565b620000d260201b60201c565b620004f9565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200021a57607f821691505b60208210810362000230576200022f620001d2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200029a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200025b565b620002a686836200025b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002f3620002ed620002e784620002be565b620002c8565b620002be565b9050919050565b6000819050919050565b6200030f83620002d2565b620003276200031e82620002fa565b84845462000268565b825550505050565b600090565b6200033e6200032f565b6200034b81848462000304565b505050565b5b8181101562000373576200036760008262000334565b60018101905062000351565b5050565b601f821115620003c2576200038c8162000236565b62000397846200024b565b81016020851015620003a7578190505b620003bf620003b6856200024b565b83018262000350565b50505b505050565b600082821c905092915050565b6000620003e760001984600802620003c7565b1980831691505092915050565b6000620004028383620003d4565b9150826002028217905092915050565b6200041d8262000198565b67ffffffffffffffff811115620004395762000438620001a3565b5b62000445825462000201565b6200045282828562000377565b600060209050601f8311600181146200048a576000841562000475578287015190505b620004818582620003f4565b865550620004f1565b601f1984166200049a8662000236565b60005b82811015620004c4578489015182556001820191506020850194506020810190506200049d565b86831015620004e45784890151620004e0601f891682620003d4565b8355505b6001600288020188555050505b505050505050565b612f6f80620005096000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde146102a4578063c87b56dd146102c0578063e985e9c5146102f0578063eacabe1414610320578063f2fde38b146103505761010b565b8063715018a6146102425780638da5cb5b1461024c57806395d89b411461026a578063a22cb465146102885761010b565b806323b872dd116100de57806323b872dd146101aa57806342842e0e146101c65780636352211e146101e257806370a08231146102125761010b565b806301ffc9a71461011057806306fdde0314610140578063081812fc1461015e578063095ea7b31461018e575b600080fd5b61012a60048036038101906101259190611cc9565b61036c565b6040516101379190611d11565b60405180910390f35b61014861044e565b6040516101559190611dbc565b60405180910390f35b61017860048036038101906101739190611e14565b6104e0565b6040516101859190611e82565b60405180910390f35b6101a860048036038101906101a39190611ec9565b610526565b005b6101c460048036038101906101bf9190611f09565b61063d565b005b6101e060048036038101906101db9190611f09565b61069d565b005b6101fc60048036038101906101f79190611e14565b6106bd565b6040516102099190611e82565b60405180910390f35b61022c60048036038101906102279190611f5c565b610743565b6040516102399190611f98565b60405180910390f35b61024a6107fa565b005b61025461080e565b6040516102619190611e82565b60405180910390f35b610272610838565b60405161027f9190611dbc565b60405180910390f35b6102a2600480360381019061029d9190611fdf565b6108ca565b005b6102be60048036038101906102b99190612154565b6108e0565b005b6102da60048036038101906102d59190611e14565b610942565b6040516102e79190611dbc565b60405180910390f35b61030a600480360381019061030591906121d7565b610a54565b6040516103179190611d11565b60405180910390f35b61033a600480360381019061033591906122b8565b610ae8565b6040516103479190611f98565b60405180910390f35b61036a60048036038101906103659190611f5c565b610b28565b005b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061043757507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610447575061044682610bab565b5b9050919050565b60606000805461045d90612343565b80601f016020809104026020016040519081016040528092919081815260200182805461048990612343565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505050905090565b60006104eb82610c15565b6004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610531826106bd565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610598906123e6565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166105c0610c60565b73ffffffffffffffffffffffffffffffffffffffff1614806105ef57506105ee816105e9610c60565b610a54565b5b61062e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062590612478565b60405180910390fd5b6106388383610c68565b505050565b61064e610648610c60565b82610d21565b61068d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106849061250a565b60405180910390fd5b610698838383610db6565b505050565b6106b8838383604051806020016040528060008152506108e0565b505050565b6000806106c9836110af565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073190612576565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107aa90612608565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6108026110ec565b61080c600061116a565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461084790612343565b80601f016020809104026020016040519081016040528092919081815260200182805461087390612343565b80156108c05780601f10610895576101008083540402835291602001916108c0565b820191906000526020600020905b8154815290600101906020018083116108a357829003601f168201915b5050505050905090565b6108dc6108d5610c60565b8383611230565b5050565b6108f16108eb610c60565b83610d21565b610930576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109279061250a565b60405180910390fd5b61093c8484848461139c565b50505050565b606061094d82610c15565b600060066000848152602001908152602001600020805461096d90612343565b80601f016020809104026020016040519081016040528092919081815260200182805461099990612343565b80156109e65780601f106109bb576101008083540402835291602001916109e6565b820191906000526020600020905b8154815290600101906020018083116109c957829003601f168201915b5050505050905060006109f76113f8565b90506000815103610a0c578192505050610a4f565b600082511115610a41578082604051602001610a29929190612664565b60405160208183030381529060405292505050610a4f565b610a4a8461140f565b925050505b919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000610af26110ec565b610afc6008611477565b6000610b08600861148d565b9050610b14848261149b565b610b1e81846116b8565b8091505092915050565b610b306110ec565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b96906126fa565b60405180910390fd5b610ba88161116a565b50565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610c1e81611725565b610c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5490612576565b60405180910390fd5b50565b600033905090565b816004600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16610cdb836106bd565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610d2d836106bd565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610d6f5750610d6e8185610a54565b5b80610dad57508373ffffffffffffffffffffffffffffffffffffffff16610d95846104e0565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff16610dd6826106bd565b73ffffffffffffffffffffffffffffffffffffffff1614610e2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e239061278c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e929061281e565b60405180910390fd5b610ea88383836001611766565b8273ffffffffffffffffffffffffffffffffffffffff16610ec8826106bd565b73ffffffffffffffffffffffffffffffffffffffff1614610f1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f159061278c565b60405180910390fd5b6004600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46110aa838383600161188c565b505050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6110f4610c60565b73ffffffffffffffffffffffffffffffffffffffff1661111261080e565b73ffffffffffffffffffffffffffffffffffffffff1614611168576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115f9061288a565b60405180910390fd5b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361129e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611295906128f6565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161138f9190611d11565b60405180910390a3505050565b6113a7848484610db6565b6113b384848484611892565b6113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e990612988565b60405180910390fd5b50505050565b606060405180602001604052806000815250905090565b606061141a82610c15565b60006114246113f8565b90506000815111611444576040518060200160405280600081525061146f565b8061144e84611a19565b60405160200161145f929190612664565b6040516020818303038152906040525b915050919050565b6001816000016000828254019250508190555050565b600081600001549050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361150a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611501906129f4565b60405180910390fd5b61151381611725565b15611553576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161154a90612a60565b60405180910390fd5b611561600083836001611766565b61156a81611725565b156115aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a190612a60565b60405180910390fd5b6001600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816002600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46116b460008383600161188c565b5050565b6116c182611725565b611700576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f790612af2565b60405180910390fd5b806006600084815260200190815260200160002090816117209190612cbe565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff16611747836110af565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600181111561188657600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146117fa5780600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117f29190612dbf565b925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118855780600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461187d9190612df3565b925050819055505b5b50505050565b50505050565b60006118b38473ffffffffffffffffffffffffffffffffffffffff16611ae7565b15611a0c578373ffffffffffffffffffffffffffffffffffffffff1663150b7a026118dc610c60565b8786866040518563ffffffff1660e01b81526004016118fe9493929190612e7c565b6020604051808303816000875af192505050801561193a57506040513d601f19601f820116820180604052508101906119379190612edd565b60015b6119bc573d806000811461196a576040519150601f19603f3d011682016040523d82523d6000602084013e61196f565b606091505b5060008151036119b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ab90612988565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050611a11565b600190505b949350505050565b606060006001611a2884611b0a565b01905060008167ffffffffffffffff811115611a4757611a46612029565b5b6040519080825280601f01601f191660200182016040528015611a795781602001600182028036833780820191505090505b509050600082602001820190505b600115611adc578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611ad057611acf612f0a565b5b04945060008503611a87575b819350505050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611b68577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611b5e57611b5d612f0a565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611ba5576d04ee2d6d415b85acef81000000008381611b9b57611b9a612f0a565b5b0492506020810190505b662386f26fc100008310611bd457662386f26fc100008381611bca57611bc9612f0a565b5b0492506010810190505b6305f5e1008310611bfd576305f5e1008381611bf357611bf2612f0a565b5b0492506008810190505b6127108310611c22576127108381611c1857611c17612f0a565b5b0492506004810190505b60648310611c455760648381611c3b57611c3a612f0a565b5b0492506002810190505b600a8310611c54576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611ca681611c71565b8114611cb157600080fd5b50565b600081359050611cc381611c9d565b92915050565b600060208284031215611cdf57611cde611c67565b5b6000611ced84828501611cb4565b91505092915050565b60008115159050919050565b611d0b81611cf6565b82525050565b6000602082019050611d266000830184611d02565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d66578082015181840152602081019050611d4b565b60008484015250505050565b6000601f19601f8301169050919050565b6000611d8e82611d2c565b611d988185611d37565b9350611da8818560208601611d48565b611db181611d72565b840191505092915050565b60006020820190508181036000830152611dd68184611d83565b905092915050565b6000819050919050565b611df181611dde565b8114611dfc57600080fd5b50565b600081359050611e0e81611de8565b92915050565b600060208284031215611e2a57611e29611c67565b5b6000611e3884828501611dff565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e6c82611e41565b9050919050565b611e7c81611e61565b82525050565b6000602082019050611e976000830184611e73565b92915050565b611ea681611e61565b8114611eb157600080fd5b50565b600081359050611ec381611e9d565b92915050565b60008060408385031215611ee057611edf611c67565b5b6000611eee85828601611eb4565b9250506020611eff85828601611dff565b9150509250929050565b600080600060608486031215611f2257611f21611c67565b5b6000611f3086828701611eb4565b9350506020611f4186828701611eb4565b9250506040611f5286828701611dff565b9150509250925092565b600060208284031215611f7257611f71611c67565b5b6000611f8084828501611eb4565b91505092915050565b611f9281611dde565b82525050565b6000602082019050611fad6000830184611f89565b92915050565b611fbc81611cf6565b8114611fc757600080fd5b50565b600081359050611fd981611fb3565b92915050565b60008060408385031215611ff657611ff5611c67565b5b600061200485828601611eb4565b925050602061201585828601611fca565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61206182611d72565b810181811067ffffffffffffffff821117156120805761207f612029565b5b80604052505050565b6000612093611c5d565b905061209f8282612058565b919050565b600067ffffffffffffffff8211156120bf576120be612029565b5b6120c882611d72565b9050602081019050919050565b82818337600083830152505050565b60006120f76120f2846120a4565b612089565b90508281526020810184848401111561211357612112612024565b5b61211e8482856120d5565b509392505050565b600082601f83011261213b5761213a61201f565b5b813561214b8482602086016120e4565b91505092915050565b6000806000806080858703121561216e5761216d611c67565b5b600061217c87828801611eb4565b945050602061218d87828801611eb4565b935050604061219e87828801611dff565b925050606085013567ffffffffffffffff8111156121bf576121be611c6c565b5b6121cb87828801612126565b91505092959194509250565b600080604083850312156121ee576121ed611c67565b5b60006121fc85828601611eb4565b925050602061220d85828601611eb4565b9150509250929050565b600067ffffffffffffffff82111561223257612231612029565b5b61223b82611d72565b9050602081019050919050565b600061225b61225684612217565b612089565b90508281526020810184848401111561227757612276612024565b5b6122828482856120d5565b509392505050565b600082601f83011261229f5761229e61201f565b5b81356122af848260208601612248565b91505092915050565b600080604083850312156122cf576122ce611c67565b5b60006122dd85828601611eb4565b925050602083013567ffffffffffffffff8111156122fe576122fd611c6c565b5b61230a8582860161228a565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061235b57607f821691505b60208210810361236e5761236d612314565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b60006123d0602183611d37565b91506123db82612374565b604082019050919050565b600060208201905081810360008301526123ff816123c3565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b6000612462603d83611d37565b915061246d82612406565b604082019050919050565b6000602082019050818103600083015261249181612455565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006124f4602d83611d37565b91506124ff82612498565b604082019050919050565b60006020820190508181036000830152612523816124e7565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000612560601883611d37565b915061256b8261252a565b602082019050919050565b6000602082019050818103600083015261258f81612553565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b60006125f2602983611d37565b91506125fd82612596565b604082019050919050565b60006020820190508181036000830152612621816125e5565b9050919050565b600081905092915050565b600061263e82611d2c565b6126488185612628565b9350612658818560208601611d48565b80840191505092915050565b60006126708285612633565b915061267c8284612633565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006126e4602683611d37565b91506126ef82612688565b604082019050919050565b60006020820190508181036000830152612713816126d7565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b6000612776602583611d37565b91506127818261271a565b604082019050919050565b600060208201905081810360008301526127a581612769565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612808602483611d37565b9150612813826127ac565b604082019050919050565b60006020820190508181036000830152612837816127fb565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612874602083611d37565b915061287f8261283e565b602082019050919050565b600060208201905081810360008301526128a381612867565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006128e0601983611d37565b91506128eb826128aa565b602082019050919050565b6000602082019050818103600083015261290f816128d3565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b6000612972603283611d37565b915061297d82612916565b604082019050919050565b600060208201905081810360008301526129a181612965565b9050919050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006129de602083611d37565b91506129e9826129a8565b602082019050919050565b60006020820190508181036000830152612a0d816129d1565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000612a4a601c83611d37565b9150612a5582612a14565b602082019050919050565b60006020820190508181036000830152612a7981612a3d565b9050919050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000612adc602e83611d37565b9150612ae782612a80565b604082019050919050565b60006020820190508181036000830152612b0b81612acf565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612b747fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612b37565b612b7e8683612b37565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612bbb612bb6612bb184611dde565b612b96565b611dde565b9050919050565b6000819050919050565b612bd583612ba0565b612be9612be182612bc2565b848454612b44565b825550505050565b600090565b612bfe612bf1565b612c09818484612bcc565b505050565b5b81811015612c2d57612c22600082612bf6565b600181019050612c0f565b5050565b601f821115612c7257612c4381612b12565b612c4c84612b27565b81016020851015612c5b578190505b612c6f612c6785612b27565b830182612c0e565b50505b505050565b600082821c905092915050565b6000612c9560001984600802612c77565b1980831691505092915050565b6000612cae8383612c84565b9150826002028217905092915050565b612cc782611d2c565b67ffffffffffffffff811115612ce057612cdf612029565b5b612cea8254612343565b612cf5828285612c31565b600060209050601f831160018114612d285760008415612d16578287015190505b612d208582612ca2565b865550612d88565b601f198416612d3686612b12565b60005b82811015612d5e57848901518255600182019150602085019450602081019050612d39565b86831015612d7b5784890151612d77601f891682612c84565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612dca82611dde565b9150612dd583611dde565b9250828203905081811115612ded57612dec612d90565b5b92915050565b6000612dfe82611dde565b9150612e0983611dde565b9250828201905080821115612e2157612e20612d90565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000612e4e82612e27565b612e588185612e32565b9350612e68818560208601611d48565b612e7181611d72565b840191505092915050565b6000608082019050612e916000830187611e73565b612e9e6020830186611e73565b612eab6040830185611f89565b8181036060830152612ebd8184612e43565b905095945050505050565b600081519050612ed781611c9d565b92915050565b600060208284031215612ef357612ef2611c67565b5b6000612f0184828501612ec8565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220a432e54b5888b7b0fdda6c58dcfd2aec166bc9bdd49fdf7684f02fc38b8f171e64736f6c63430008110033",
"value":"0"
},
{
"transactionHash":"0x5a57e3051cb92e2d482515b07e7b3d1851722a74654657bd64a14c39ca3f9cf2",
"transactionStatus":1,
"blockHash":"0x92557f7e29c39cae6be013ffc817620fcd5233b68405cdfc6e0b5528261e81e5",
"blockNumber":7976373,
"from":"0xf29a6c0f8ee500dc87d0d4eb8b26a6fac7a76767",
"to":"0xb0428bf0d49eb5c2239a815b43e59e124b84e303",
"contractAddress":null,
"logsCount":0,
"input":"0x",
"value":50000000000000000
},
{
"transactionHash":"0x71b9e2b44d40498c08a62988fac776d0eac0b5b9613c37f9f6f9a4b888a8b057",
"transactionStatus":1,
"blockHash":"0x32edca7a39d0b1fc3d19fd1487c3c69beadad7cdcd5e5f1c9e815e7d1c460a0d",
"blockNumber":7957369,
"from":"0x22ba753ca065d65d4d0b9f4fac7a669746175199",
"to":"0x14cb06e8de2222912138f9a062e5a4d9f4821409",
"contractAddress":null,
"logsCount":3,
"input":"0x95297e24a8d61b73377cdc07fcf0cdd5473a1c81d541d3bcbbac29dd02d9f680af901d705591dba920dde33e5f1043c1b84106b0f223e7b954b17bde9ffe62206b583b2d00000000000000000000000000000000000000000000000000000000000021d300eea48906338871c59f0d12348b85c66461cd8c9e80faa4d3e63b134279595a159d3bfa16088686ea5b2406f82109b60a5792b77bc173106c01f0fbfed6598905d63c4ca36d0740e427d53ea8d1cc707b15a846c854a14b2e3b2e30ce129b8721a54e650d0e077cf260d8c3c84a431b287bd35ffe4c03c27a19d9a0d3320ae905a76cdd5a8bfeffa1c837279d67654e053a8e80cf2e581968a93bf827c3cf702d8c881054165ebd6d1ebea052f9af3a10338c9314ed99609735b8b76fe274c411d32840d8a1f85b51ee84bd2b0d70fe5725362406ac200a1186ea82ae39731a05d84408b5eca5130fa799aa898bbb2132054dcd8890ff004ac855f57c813fc6",
"value":0
},
{
"transactionHash":"0xc5f96bf1b54d3314425d2379bd77d7ed4e644f7c6e849a74832028b328d4d798",
"transactionStatus":0,
"blockHash":"0x3ac55cb392661e0d2239267022dc30f32dc4767cdacfd3e342443122b87101d3",
"blockNumber":7976382,
"from":"0x58fa6ab2931b73a22d85617125b936bd3f74e765",
"to":"0x302fd86163cb9ad5533b3952dafa3b633a82bc51",
"contractAddress":null,
"logsCount":0,
"input":"0x97da873c0000000000000000000000000000000000000000000000056bc75e2d63100000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000058fa6ab2931b73a22d85617125b936bd3f74e76512d1a55b318c0be714e7ce8bc54a96ac48813cfcb73cbaa0a6e933fa9a35b7bb212c8f9a45c4430a6fa3cb8b67a28403c51e494615df4f826280256a8ddabde630818902818100e4dcd34866228be9255cbd322590b92ded49868321f0535734587348c4cb450d2d68367f686faa4688410662e9f38dc62a742f71d8e81b40a3c444381ee1245024467c8f29f04f0f83059dee234f1d4ab13e536eb5958adf91782ed3495b36fd5db6e76626771d998d6e4c75eceb58e1c783b33920dcd7723fbfbc33ba6d5ff902030100010000000000000000000000000000000000000000",
"value":1265249737905771
}
]
}
- Intro to Ethereum concepts - node, tx, address, ether and wei - https://ethereum.org/en/developers/docs/intro-to-ethereum/
- For access to ethereum Node one of the following two. Both of them have free versions:
- Infura: https://www.infura.io/
- Alchemy: https://www.alchemy.com/
- RLP - https://ethereum.org/en/developers/docs/data-structures-and-encoding/rlp/
- Ethereum JSONRPC - https://ethereum.org/en/developers/docs/apis/json-rpc/
- Library for interaction with ethereum. Also contains common Ethereum types. https://github.com/gakonst/ethers-rs
- Library for interaction with ethereum. https://docs.ethers.io/v5/
- Library for interaction with ethereum. Also contains common Ethereum types. https://pkg.go.dev/github.com/ethereum/go-ethereum#section-directories
- Library for interaction with ethereum. https://docs.web3j.io/4.8.7/
The server should handle a POST request on an endpoint named /lime/authenticate
. The request body should be a JSON object containing the username and password. Upon sending correct username and password (list of usernames and passwords below), the server should respond with a JWT token. The response format should be
{
token: string; // The JWT token for the user
}
The following user and password combinations should work:
alice
/alice
bob
/bob
carol
/carol
dave
/dave
Allow the /lime/eth/:rlphex
to optionally have a header AUTH_TOKEN - the JWT token of a user. If the JWT token is provided, the server should “remember” that this user has asked for these specific transaction hashes. This will become important when we define /lime/my
The server should handle a GET request on endpoint named /lime/my
. It should have a single parameter in the header AUTH_TOKEN
- the JWT token of the user. Upon success the server should return all the transactions that this user has ever asked for. The response format should be the same as /lime/eth/:rlphex
.
Create a unit test suite that proves that:
- Your RLP decoding works
- Your database can store and retrieve data
- You are generating and decode JWT tokens correctly
The tests should be runnable via
Rust: cargo test
Node.js: npm test
. Use the mocha
framework for the unit testing.
Golang: go test
Java: gradle test
Add Dockerfile that builds an image of your server with tag limeapi
. Your server should be runnable via docker run limeapi
Improve your documentation with the changes for the modified api calls, how to run unit tests and docker work.
Improve the documentation with:
- C4 diagrams of the application
- How would you improve the API? Reasoning around the design choices and tradeoffs
- Your strategy for Continuous Integration of the API
- Your strategy for Scalability of the service
- How would you approach making this service paid? How would the architecture change?
- How would you approach failing Ethereum Node URL?