* [rpc] fix some test cases
* fix test cases
* [rpc] use harmony/eth/rpc for customized changes
* [RPC] replace one more use of RPC at accounts module
* [RPC] fix test cases
1. Refactored service manager with cleaner interface.
2. Add prometheus to the service manager.
3. Graceful shutdown of the services (including consensus).
4. Some code refactor regarding consensus graceful shutdown.
Co-authored-by: Rongjian Lan <rongjian.lan@gmail.com>
* [staking] Move reward values from Network pkg to its own
* Refactor code for the move
* Implement logic to accurately set total supply
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [staking] Add totalPreStakingNetworkRewards to reward values
* Implement GetTotalTokens for use in other packages
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [core] Move getGenesisSpec to core pkg
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [core] Update gen spec docs
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [staking] Hook in updateInitialRewardValues on node init
* Add some docs for clarification
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Fix GetCirculatingSupply & GetTotalSupply RPCs
* Updated err msg in staking reward values.go
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Move GetCirculatingSupply logic into internal pkg
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [explorer] Update circulating supply & total supply vals
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [staking] Add Localnet rewards val & Errs
* [internal] Make GetCirculatingSupply consistent with WhatPercentStakedNow
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [staking] Fix imports
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [consensus] Make PercentageForTimeStamp return 1 for non-mainnet chains
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [staking] Fix reward dec math + Testnet testnet vals
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [staking] Make all const reward vals ONE instead of ATTO
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [internal] Correct returned value to ONE instead of Atto
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [staking] Fix dec precision
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [staking] Fix TestGetPreStakingRewardsFromBlockNumber test
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [staking] Use TotalInitialTokens instead of TotalPreStakingTokens
* Done so basis is off block 0 to account for phased mainnet release
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [internal] Fix GetCirculatingSupply
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* Add ethereum transaction support
* fix fmt
* fix lint
* add new block body fork logic
* add back deleted code
* lower case block version const
* add eth txn into new version of block
* refactor back
* refactor more
* fix test code
* Fix build
* Fix build
* revert eth txn in block and block proposal
* fix build
* fix build
* fix build
* Add ethereum transaction support
* fix fmt
* fix lint
* add new block body fork logic
* add back deleted code
* lower case block version const
* add eth txn into new version of block
* refactor back
* refactor more
* fix test code
* Fix build
* Fix build
* [rosetta] Fix staking + plain tx receipt fetch
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add receipt check error catch
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix special case ID check
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix receipt check error catch
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Refactor operations & prep for internal tx exposure
* Remove gas op relation for tx operations. Gas is for submission & processing
the tx, thus not really related to the amount being transferred
* Make optional starting op a ptr to a uint to keep consistent
* Reorg file for consistency of fn placement
* Rename functions for clarity
* Make getContractCreationNativeOperations consume getBasicTransferOperations for consistency
* Remove invariant doc as it does not apply anymore
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add framework for parsing traced txs
* Define ContractInfo struct for FormatTransaction
* Add tx trace helper function defs & propagate type defs
* Add a GetTransactionStatus helper fn for Operation formatting/creation
* Add wrapper function, getContractTransferNativeOperations, to get internal operations
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Implement transaction tracer
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [tracer] Add CallerAddress & CodeAddress to tracer logs
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [tracer] Remove ptr to slice & map in StructLogRes
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Implement getContractInternalTransferNativeOperations
* Add ContractAddress to ContractInfo for future usages (i.e: erc20 parsing)
* Only check for contract address if there is tx data in BlockTransaction
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix status report for contract related txs
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [tracer] Expose contract address instead of code address
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add trace cache & update TODO
* Trace any PLAIN transaction instead of only transactions with data.
This is to account for fall back contract fn calls & ignore staking data.
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Make internal tx formatter not return err on nil exec result
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* Fix lint
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix tests
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add internal tx unit tests
* Fix tx data len check for contract related transfers as a transaction with len 0
data can happen for a contract (and fail) due to fall back operations.
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Update invariant comment
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Expose mutually exclusive ops + update docs & tests
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix docs and err msgs
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Start refactor of side effect transactions
* Rename special transactions to side effect transactions
* Rename various variables for consistancy within context of side effect transasctions
* Remove all individual transaction for side effects, instead start process of batching
all side effects under one transaction.
* Finish batching of genesis side effect transaction.
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add `getSideEffectTransaction` & refactor consumers
This will hook in the logic to report all side effects under 1 transactions.
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Remove genesis logic path for special effect txs
It is not integrated with the normal special effect logic
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Rename helper fns to use 'side effect'
Replacing special case
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix special case operation index
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Consolidate side effect operation logic
* Update tests for new side effect logic
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix import
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Update inline doc
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix comment for /block logic
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Support EVM pre-process for contract creation txs
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix re-delegation amount
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [node] Add Cx epoch check
* Report invalid epoch for staking tx
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add Cx epoch check in Metadata request
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [node] Fix lint
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Make nonsensical native tx construction error
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Refactor native constant names to match value
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Remove hex address comparison
This is done since the hex address in the metadata is more of a
QOL feature, all that matters is the b32 address.
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix error message for incorrect signed tx parse
* Add check for sender address when parsing unsigned tx
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Make bad signature error message clearer
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add shard ID check when combining transactions
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add shard ID check for tx Hash & Submission
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix invalid signature type err msg
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add shard check for tx parse
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add check for shard ID when creating Tx payload
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Update to v1.4.6 of rosetta SDK
* Set rosetta release version
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Expose DoEVMCall
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix contract related operations
* Make contract creation be a 2 operation pair, with contract addr as receiver
* Add Contract address to all transaction metadata that involving contract operations
* Update construction API to include framework for contract functionality
* Update tests
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix imports
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix construction metadata check for contracts
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [ntp] Make TestCheckLocalTimeAccurate fault tolerant
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix nil block ptr crash & generalize getBlock
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Correct error type for account rosetta errors
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix pre-staking rewards with GetPreStakingBlockRewards
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [hmy] Refactor GetDetailedBlockSignerInfo to use availability
* Add GetPreStakingBlockRewards with cache
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix prestaking block reward unit tests
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Report tx fees of coinbase for prestaking rewards
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Update docker file name in readme
* [rosetta] Print node version when running node using docker
* [rosetta] Make docker image smaller & update README.md
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [core] Add FindLogsWithTopic & unit test
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [hmy] Add GetDetailedBlockSignerInfo
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [hmy] Add IsCommitteeSelectionBlock
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [test] Add test transaction creation helpers
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Refactor account.go & add tests
* Move TestNewAccountIdentifier & TestGetAddress to account_test.go
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Move Operation & Tx formatting to own files
* Move Respective unit tests to own files
* Expose GetOperations & GetStakingOperations
* Expose FormatTransaction, FormatCrossShardReceiverTransaction,
FormatGenesisTransaction, FormatPreStakingRewardTransaction & FormatUndelegationPayoutTransaction
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Move TransactionMetadata to transaction_construction.go
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Update construction to use new helpers & formatters
* Make docs consistent for mempool.go
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Move all special tx & blk handling to own file
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Remove all moved fns, methods & tests from block.go
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* Fix lint & imports
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Rename all tx related files for clarity
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Rename DefaultSenderAddress to FormatDefaultSenderAddress
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Rename Currency to NativeCurrency
* This is in anticipation of HRC20 token support with rosetta
* Rename various native operation functions accordingly
* Add documentation to explain what a native token is
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix pre-staking block reward calculation
* Move getPreStakingRewardTransactionIdentifiers to block_special.go
* Add epoch to block metadata
* Update unit tests
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* Add IsLastBlockInEpoch method to Block & Header
* Refactor all uses of length check `ShardState`
* [hmy] Refactor IsCommitteeSelectionBlock to use chain.IsCommitteeSelectionBlock
* Address PR comments
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Update var names in preStakingRewardBlockTransaction
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [node] Add txpool .rlp file based on cmd datadir
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Init docker infra files
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add Dockerfile run script & update README.md
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Clarify docker usage in infra README.md
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [cmd] Add IsOffline flag
* Add IsOffline to node config
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [node] Disable syncing and p2p msgs if offline
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Clarify syncing status msg
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [internal/config] Add DefaultLocalListenIP & DefaultPublicListenIP
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [cmd] Add IP to p2p config
* Use default local listening ip for p2p hors if node is in offline
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [p2p] Use peer ip when creating listenAddr
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [cmd] Fix unit tests & bump config version
* Fix TestAddPeer & TestConnectionToInvalidPeer p2p test
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [cmd] Fix lint
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [cmd] Address PR comments
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add /construct function framework
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add network ID check to all construct endpoints
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add UnsupportedCurveTypeError
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Implement ConstructionDerive & add ConstructAPI router
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Make recover middleware the outermost middleware
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Correct error for block not found
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Expose EstimateGas
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add InvalidTransactionConstructionError
* Add GetValidConstructionOperations
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Make TransactionMetadata optional ptr
* Add UnmarshalFromInterface for TransactionMetadata
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add InvalidTransactionConstructionError to network response
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add ConstructionPreprocess & ConstructionMetadata skeleton
* Add Helper methods for said functions
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add GasPrice to ConstructMetadata
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Make suggested gas fee & price its own fn
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Nit - fix comment
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add To & From Account ID in tx metadata
* remove getAmountFromUndelegateMessage
* make contract address a valid account identifier
* remove needless metadata in non-staking operations
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add error report for b32 error in newAccountIdentifier
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Simplify assertValidNetworkIdentifier
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Use sdk MapMarshall instead of rpc structured response
* remove unused GetValidConstructionOperations
* Add CurrencyHash
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Implement assertValidTransferOperationsAndGetTxAccounts
* refactor usages of rpc structured response for sdk map marshall
* add account identifier checks for transaction metadata
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Max related operation check more general for tx op check
* refactor names for readability
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add & Expose OperationComponents
* Remove txAccounts & add OperationComponents to metadata for quicker processing
* Remove From & To acc ID from TransactionMetadata as it's in OperationComponents
* Update tests for changes
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add tx type to OperationComponents
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add logs to TransactionMetadata
* Enforce Operation type uniqueness invariant for each transaction
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add error for 3+ operations in getOperationComponents
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Expose GetOperationComponents
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add CrossShardTransactionOperationMetadata
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add staking operation medata type declaration
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Fix error messages & update comment
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Implement getCrossShardOperationComponents
* rename txAccs to components for clarity
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Implement getContractCreationOperationComponents
* Fix some edge case optional checks for operation validation
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [go.mod] Bump rosetta version to 0.4.4 & dependent libs
* Update broken rosetta structs
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add ChainID to ConstructMetadata
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Rename PreStakingBlockRewardOperation
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Init operation_components.go & move respective code
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Refactor formatTransaction for clarity
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Move maxNumOfConstructionOps to operation_components.go
* Clarify unsupported type err msg
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Implement framework for ConstructionPayloads
* Remove currying OperationComponents in metadata as PublicKeys is now
part of the request in the necessary endpoints
* Add respective checks for added PublicKeys
* Make getAddressFromPublicKey more general & update tests
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add getAddress and update respective functions
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Create transaction_construction.go & impl ConstructTransaction
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add unmarshal check for ConstructMetadata & ConstructMetadataOptions
* Remove constructTransaction
* Wrap unsigned transaction with UnsignedTransaction to include intended signer
* Add framework for ConstructionParse
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add getSigningPayload method to construction
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [internal/commonm] Add MustGeneratePrivateKey
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Implement parseUnsignedTransaction
* Add unpackWrappedTransactionFromHexString & refactor rlp encoding of transactions
* Make getSigningPayload return a list
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add TestUnpackWrappedTransactionFromHexString
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Implement parseSignedTransaction
* Move unpackWrappedTransactionFromHexString to ConstructionParse
before parsing transactions bases on if it's signed or not
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Nit - fix WrappedTransaction comments
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add extra negative tests for unpackWrappedTransactionFromHexString
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Finish initial Construct implementation
* Implement ConstructionCombine
* Implement ConstructionHash
* Implement ConstructionSubmit
* Ensure RLPbytes & From is present in WrappedTransaction
when unpackWrappedTransactionFromHexString is called
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Refactor construction into separate files
* Move tests into appropriate files
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Implement construction_check_test.go
* Update edge case for getSuggestedFeeAndPrice found during testing
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Implement construction_parse_test.go
* Clarify names for construction_create_test.go
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Fix ConstructionParse to not use crypto.PubkeyToAddress
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Fix UnmarshalFromInterface for CrossShardTransactionOperationMetadata
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add operation_components_test.go
* Implement TestGetContractCreationOperationComponents
* Implement TestGetCrossShardOperationComponents
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Finish operation_components_test.go
* Implement TestGetTransferOperationComponents
* Implement TestGetOperationComponents
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Fix big number checks for getTransferOperationComponents
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Implement transaction_construction_test.go
* Implement TestConstructPlainTransaction
* Implement TestConstructCrossShardTransaction
* Implement TestConstructContractCreationTransaction
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add shard ID checks for constructCrossShardTransaction
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add bad curve test for TestGetAddressFromPublicKey
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add nil error catches for Construction API
* Fix nits in messages as seen during pass
* Add DefaultGasLimit
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add trace message with version to all err msgs
* Add NewError unit test
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add TestGetAddressFromKnownPublicKey
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [hmy] Fix possible nil ptr crash for GetBlockSigners
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Edge case bug fixes
* Create empty TransactionMetdata if no metadata is provided in operations.
Also update tests to correctly account for the behavior.
* In pre-staking era make current block one less than the absolute latest
to guarentee calculation of pres-taking eara block rewards.
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix unpackWrappedTransactionFromHexString
* Rename function to unpackWrappedTransactionFromString
* Update respective tests
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Make parsed transaction statuses empty
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Remove needles list initialization
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add SignatureType & SignedPayloadLength with checks
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Fix genesis network status crash
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Correct error message dumps for transaction_construction.go
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add OperationType to ConstructMetadataOptions
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Fix rosetta service rebase
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Fix estimate gas fail check
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add formatNegativeValue to ensure there's only 1 zero
* Correct regression found in constructCrossShardTransaction
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
[rosetta] Add contract creation estimate gas hack
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add DefaultSenderAddress for transaction formatter
* Update Construction API parser to reflect change
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Fix imports
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Address PR comments
* Add GetCallStackInfo to internal utils
* Add EstimateGas TODO in RPC package
* Remove DefaultGasLimit to use param gas limit
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Add checks to tx formatter for nil to addr
* Remove needless block check for genesisBlock
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Remove EstimatedGasUsed from WrappedTransaction
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rosetta] Implement mempool endpoint
* [block] Make FormatTransaction public to use in the Mempool
* [mempool] Create Transaction for /mempool/transaction using estimated transaction receipt
* [rosetta] Add Mempool API to the Router
* [rosetta] Update block test file with public function
* [rosetta] Add comments to explain estimated transaction receipt
* [rosetta] Revert making function public
* [rosetta] Fix hash conversion for looking up transaction in pool
* [rosetta] Fix lint
* [rosetta] Fix lint (again)
* [rosetta] Fake logs for CollectReward transaction
* [rosetta] Fix lint
* [rosetta] Fix lint again...