!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           Alexander Krupenkin 2016BSD3 mail@akru.me experimentalportableSafeLower first char of stringUpper first char of stringAlexander Krupenkin 2016BSD3 mail@akru.me experimentalportableNoneMethod argument Argument name Argument type Event argument  Argument name  Argument type 4Argument is indexed (e.g. placed on topics of event)#Elementrary contract interface itemContract constructorMethodEventFallback function&5Contract ABI is a list of method / event declarations)5Take a signature by given decl, e.g. foo(uint,string),Localy compute Keccak-256 hash of given text*)Generate method selector by given method  Delcaration+Generate event topic0 hash by givent event  Delcaration'  !&'( )*+,-./  &'()*+&'(  )*+    !&'( )*+,-./Alexander Krupenkin 2016BSD3 mail@akru.me experimentalunknownNone3Ethereum account address4Parse 3 from text string5Render 3 to text string6 Null address 3!"456789:345634563!"456789: Alexander Krupenkin 2016BSD3 mail@akru.me experimentalportableNone#)Make 256bit alignment; lazy (left, right)$ Left/Right specialized alignment% Left/Right specialized alignment&'(#$%)*+,-./0123 &'(#$%)*+,&'(#$%)*+,-./0123Alexander Krupenkin 2016BSD3 mail@akru.me experimentalportableNone=Contract ABI data codec@,Encode value into abi-encoding represenationAParse encoded value =>?@ABCDEFGH=>?@A=>?@A=>?@ABCDEFGHAlexander Krupenkin 2016BSD3 mail@akru.me experimental noportableNone,DIDynamic length byte arrayLFixed length byte arrayIJKLMN456OPQRSTUIJKLMNLMNIJK IJKLMN456OPQRSTUAlexander Krupenkin 2016BSD3 mail@akru.me experimentalportableNone7'ABI data multiparam internal serializer8rSerialize with accumulator: pair of argument count and list of pair header and data part (for dynamic arguments)9Argument offset calculator:Static argument parser;Dynamic argument parser<*Generator for tupleP{N} function signature= Generator for tupleP{N} function>?Make a ABIEncoding tuple instance with given count of arguments 789Count of argumentsPrevious dynamic argumentsOffset:;<=?@A>BC78:;> 789:;<=?@A>BCAlexander Krupenkin 2016BSD3 mail@akru.me experimentalportableNoneZSingleton parameter instance^#Tuple instances from 2 to 15 params Z[\]D^E_F`GaHbIcJdKeLfMgNhOiPjQkZ[\Z[\Z[\]D^E_F`GaHbIcJdKeLfMgNhOiPjQkAlexander Krupenkin 2016BSD3 mail@akru.me experimentalportableNone0I,lJSON-RPC error messageqSome peace of error responserJSON-RPC communication errorsError in parser statetCommon head for user errorsu2Any communication with Ethereum node wrapped with u monad%Low-level event filter data structure!Changes pulled by low-level call eth_getFilterChangesEvent filder identThe contract call paramsTransaction information)DATA, 32 Bytes - hash of the transaction.KQUANTITY - the number of transactions made by the sender prior to this one.XDATA, 32 Bytes - hash of the block where this transaction was in. null when its pending.MQUANTITY - block number where this transaction was in. null when its pending.ZQUANTITY - integer of the transactions index position in the block. null when its pending.'DATA, 20 Bytes - address of the sender.XDATA, 20 Bytes - address of the receiver. null when its a contract creation transaction.$QUANTITY - value transferred in Wei.3QUANTITY - gas price provided by the sender in Wei.&QUANTITY - gas provided by the sender.0DATA - the data send along with the transaction.Transaction hash text string=The contract call mode describe used state: latest or pendingBlock information9QUANTITY - the block number. null when its pending block.@DATA, 32 Bytes - hash of the block. null when its pending block.*DATA, 32 Bytes - hash of the parent block.QDATA, 8 Bytes - hash of the generated proof-of-work. null when its pending block.6DATA, 32 Bytes - SHA3 of the uncles data in the block.ZDATA, 256 Bytes - the bloom filter for the logs of the block. null when its pending block.?DATA, 32 Bytes - the root of the transaction trie of the block.?DATA, 32 Bytes - the root of the final state trie of the block.<DATA, 32 Bytes - the root of the receipts trie of the block.VDATA, 20 Bytes - the address of the beneficiary to whom the mining rewards were given.4QUANTITY - integer of the difficulty for this block.IQUANTITY - integer of the total difficulty of the chain until this block.,DATA - the "extra data" field of this block.3QUANTITY - integer the size of this block in bytes.1QUANTITY - the maximum gas allowed in this block.@QUANTITY - the total used gas by all transactions in this block.>QUANTITY - the unix timestamp for when the block was collated.Array of transaction objects.Array - Array of uncle hashes.VlmnopqrstuvwxLlmnopqrstuvw\uvwqrstxlmnoplmnopqrstuvwx  Alexander Krupenkin 2016BSD3 mail@akru.me experimentalportableNoneDefault u service providerEthereum node service provider.JSON-RPC provider URI, default: localhost:8545u monad runneru runner for default providerFork u with the same Alexander Krupenkin 2016BSD3 mail@akru.me experimentalportableNone9;RJSON-RPC response.SJSON-RPC request.TJSON-RPC server URIUName of called method.VGRemote call of JSON-RPC method. Arguments of function are stored into params request array.RWXSYZ[\]^TUV_`abcTUV RWXSYZ[\]^TUV_`abc Alexander Krupenkin 2016BSD3 mail@akru.me experimentalunknownNone $Returns current node version string.EReturns Keccak-256 (not the standardized SHA3-256) of the given data.4Returns the balance of the account of given address.Creates a filter object, based on filter options, to notify when the state changes (logs). To check if the state has changed, call getFilterChanges.\Polling method for a filter, which returns an array of logs which occurred since last poll.[Uninstalls a filter with given id. Should always be called when watch is no longer needed.[Executes a new message call immediately without creating a transaction on the block chain.^Creates new message call transaction or a contract creation, if the data field contains code.,Returns a list of addresses owned by client.dPolling method for a block filter, which returns an array of block hashes occurred since last poll.*Returns information about a block by hash. Alexander Krupenkin 2016BSD3 mail@akru.me experimental unportableSafe9;KEther unit typeEther unit typeFinney unit typeSzabo unit typeGWei unit typeMWei unit typeKWei unit type Wei unit typedValue abstractioneUnit specificationEthereum value unitMake a value from integer weiConvert a value to integer weiConversion beween two values)fghijklmdnoepqr "fghijklmdnoepqr Alexander Krupenkin 2016BSD3 mail@akru.me experimentalportableNone  8Dummy method for sending transaction without method call Contract method caller &Send a transaction for given contract 3, value and input data Constant call given contract 3 in mode and given input dataContract event listener=Event filter structure used by low-level subscription methods+Start an event listener for given contract 3 and callbackEvent callback control responseContinue to listen eventsTerminate event listener4Zero value is used to send transaction without money     stu                  stuAlexander Krupenkin 2016BSD3 mail@akru.me experimentalunknownNone*3IJKLMNqrstu     uqrst     LMNIJK3Alexander Krupenkin 2016BSD3 mail@akru.me experimental unportableNoneRead contract ABI from fileQQ reader for contract ABIv'Instance declaration with empty contextw1Simple data type declaration with one constructorxSimple function declarationy!ABI and Haskell types associationzEvent argument to TH type{Function argument to TH type|Solidity dynamic type predicate}Event declarations maker~Method delcarations makerDeclaration parserABI to declarations converterABI information stringvwxyz{| Is constant? Function nameFunction data name ParametersResults}~ =>?@AZ[\ Z[\=>?@Avwxyz{|}~ !"#$%&'()*+,-./01234567899:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[[\]]^_`abcdefghijjklmnopqrstuvwxyz{{|}~                                          ! "#$%&E' ( ) * + , - . / 0 1 2 3 4 5 6 7 89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[W\X]^_`abcdef g h i j k l m n o p q r s t u v w xyz{|}~"web3-0.5.2.0-LpXt0Q5uOxgubUsSirFulNetwork.Ethereum.Web3.THNetwork.Ethereum.Web3.JsonAbiNetwork.Ethereum.Web3.AddressNetwork.Ethereum.Web3.Encoding$Network.Ethereum.Web3.Encoding.Bytes$Network.Ethereum.Web3.Encoding.TupleNetwork.Ethereum.Web3.TypesNetwork.Ethereum.Web3.ProviderNetwork.Ethereum.Web3.ApiNetwork.Ethereum.UnitNetwork.Ethereum.Web3.ContractNetwork.Ethereum.Web3.Internal'Network.Ethereum.Web3.Encoding.Internal&Network.Ethereum.Web3.Encoding.TupleTHNetwork.Ethereum.Web3.JsonRpcNetwork.Ethereum.Web3#text-1.2.2.1-9Yh8rJoh8fO2JMLWffT3QsData.Text.InternalText!memory-0.13-9YH63fsEcp4AuUH5L0KHpData.ByteArray.BytesBytes FunctionArg funArgName funArgType$fShowFunctionArg$fEqFunctionArg$fOrdFunctionArgEventArg eveArgName eveArgType eveArgIndexed$fFromJSONFunctionArg$fToJSONFunctionArg$fShowEventArg $fEqEventArg $fOrdEventArg Declaration DConstructor DFunctionDEvent DFallback conInputsfunName funConstant funInputs funOutputseveName eveInputs eveAnonymous falPayable$fFromJSONEventArg$fToJSONEventArg$fShowDeclaration$fEqDeclaration$fOrdDeclaration ContractABIunABI signaturemethodIdeventId$fToJSONContractABI$fFromJSONContractABI$fShowContractABI$fFromJSONDeclaration$fToJSONDeclaration$fEqContractABI$fOrdContractABIAddressfromTexttoTextzero$fToJSONAddress$fFromJSONAddress$fIsStringAddress $fShowAddress $fEqAddress $fOrdAddress ABIEncoding toDataBuilderfromDataParsertoDatafromData$fABIEncoding[]$fABIEncodingAddress$fABIEncodingText$fABIEncodingWord$fABIEncodingInt$fABIEncodingInteger$fABIEncodingBoolBytesDunBytesDBytesNunBytesN $fShowBytesD$fABIEncodingBytesD$fEncodingTypeBytesD$fMonoidBytesD $fShowBytesN$fABIEncodingBytesN$fEncodingTypeBytesN $fEqBytesN $fOrdBytesN $fEqBytesD $fOrdBytesD Singleton unSingleton$fABIEncodingSingleton$fABIEncoding(,)$fABIEncoding(,,)$fABIEncoding(,,,)$fABIEncoding(,,,,)$fABIEncoding(,,,,,)$fABIEncoding(,,,,,,)$fABIEncoding(,,,,,,,)$fABIEncoding(,,,,,,,,)$fABIEncoding(,,,,,,,,,)$fABIEncoding(,,,,,,,,,,)$fABIEncoding(,,,,,,,,,,,)$fABIEncoding(,,,,,,,,,,,,)$fABIEncoding(,,,,,,,,,,,,,)$fABIEncoding(,,,,,,,,,,,,,,)RpcErrorerrCode errMessageerrData Web3Error JsonRpcFail ParserFailUserFailWeb3unWeb3$fExceptionWeb3Error $fFunctorWeb3$fApplicativeWeb3 $fMonadWeb3 $fMonadIOWeb3$fShowRpcError $fEqRpcError$fShowWeb3Error $fEqWeb3ErrorFilter filterAddress filterTopicsfilterFromBlock filterToBlock$fFromJSONRpcError$fToJSONRpcError $fShowFilterChangechangeLogIndexchangeTransactionIndexchangeTransactionHashchangeBlockHashchangeBlockNumber changeAddress changeData changeTopicsFilterId$fToJSONFilterId$fFromJSONFilterId$fFromJSONFilter$fToJSONFilter$fShowFilterId $fEqFilterId $fOrdFilterId $fShowChangeCallcallFromcallTocallGas callPrice callValuecallData$fFromJSONChange$fToJSONChange $fShowCall TransactiontxHashtxNonce txBlockHash txBlockNumbertxTransactionIndextxFromtxTotxValue txGasPricetxGastxInputTxHashCallModeLatestPending$fToJSONCallMode$fFromJSONCall $fToJSONCall$fShowCallMode $fEqCallMode$fShowTransactionBlock blockNumber blockHashblockParentHash blockNonceblockSha3UnclesblockLogsBloomblockTransactionsRootblockStateRootblockReceiptRoot blockMinerblockDifficultyblockTotalDifficultyblockExtraData blockSize blockGasLimit blockGasUsedblockTimestampblockTransactions blockUncles$fFromJSONTransaction$fToJSONTransaction $fShowBlock$fFromJSONBlock $fToJSONBlockDefaultProviderProviderrpcUrirunWeb3'runWeb3forkWeb3$fProviderDefaultProviderweb3_clientVersion web3_sha3eth_getBalance eth_newFiltereth_getFilterChangeseth_uninstallFiltereth_calleth_sendTransaction eth_accountseth_newBlockFiltereth_getBlockFilterChangeseth_getBlockByHashKEtherEtherFinneySzaboGWeiMWeiKWeiWeiUnitfromWeitoWeiconvert $fUnitSpecU7 $fUnitSpecU6 $fUnitSpecU5 $fUnitSpecU4 $fUnitSpecU3 $fUnitSpecU2 $fUnitSpecU1 $fUnitSpecU0 $fReadValue $fShowValue$fFractionalValue $fNumValue$fUnitSpecValue $fUnitValue $fEqValue $fOrdValueNoMethodMethodsendTxcallEvent eventFilterevent EventAction ContinueEventTerminateEventnopay$fMethodNoMethod$fABIEncodingNoMethod$fShowEventAction$fEqEventActionabiFromabi toLowerFirst toUpperFirstsha3showConstructor showEvent showMethod unAddressalignalignLalignR EncodingTypetypeName isDynamicint256HexBuilderint256HexParser textBuilder textParser$fEncodingType[]$fEncodingTypeAddress$fEncodingTypeText$fEncodingTypeWord$fEncodingTypeInt$fEncodingTypeInteger$fEncodingTypeBoolupdate bytesBuilder bytesDecodeABIData _serializeoffsetsParserdParser mkTuplePTypemkTupleP mkTupleInstmkAppSeqeTupleEmkEncodingInst$fABIDataBuilder $fABIData(->)tupleP2tupleP3tupleP4tupleP5tupleP6tupleP7tupleP8tupleP9tupleP10tupleP11tupleP12tupleP13tupleP14tupleP15ResponseRequest ServerUri MethodNameremotersResultrqMethodrqIdrqParamsRemoteremote_decodeResponse$fFromJSONResponse$fToJSONRequest $fRemoteWeb3 $fRemote(->)ValueUnitSpecU7U6U5U4U3U2U1U0MkValueunValuedividernamemkValue_event_sendTransaction_call instanceD'dataD'funD'typeQ eventBangType funBangType isDynTypemkEventmkFunmkDecl quoteAbiDec quoteAbiExp eventEncodigD funEncodigD eventFilterD funWrapperescape escapeNames