* Add 3s block time and change of block reward
* fixes
* add new blocks per epoch for testnet
* remove unused code
* fix 2s changing logic
* enable 2s at epoch 73000 at testnet
* Move tracing functions to hmy object
* Add new "debug" namespace for tracing functions
* Some tracing functions are disabled & return a RPC not available yet error
* [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] 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>
[viewchange] encapsulate view ID in the State struct
do NOT ues consensus.current directory to set/get viewID
use the following functions
consensus.SetCurViewID, consensus.SetViewChangingID
consensus.GetCurViewID, consensus.GetViewChangingID
Signed-off-by: Leo Chen <leo@harmony.one>
* [rpc] Refactor - expose RPC functions in rpc package
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Refactor - Undo v1 & v2 code duplication pt1
* Move apiv1 into rpc package as baseline
* Create version enum
* Refactor API creation to use version enum
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Refactor - Rejoin GetBlockByNumber & GetBlockByHash
* Both RPC versions are supported in 1 function
* Created types directory for v1 & v2 response types
* Added framework to make rpc layer more clear and legible
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Refactor - Undo v1 & v2 code duplication pt2
* Rejoin blockchain.go functions
* Create legacy service
* Improve inline documentation
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Refactor - Undo v1 & v2 code duplication pt3
* Use StructuredResponse when returning an exposed type from RPC
* Remove addrlock.go
* Add RPCBlock creation with exposed struct for easy utility from consumers
* Update blockchain.go to reflect changes of RPCBlock
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Refactor - Undo v1 & v2 code duplication pt3
* Create types for RPCs that are returned.
* Reorganize types to appropriate v1 & v2 package.
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Refactor - Undo v1 & v2 code duplication pt4
* Add context to all RPCs
* Add response switches based on different versions of the API
* Add debug logs for RPC that don't return errors
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Refactor - Undo v1 & v2 code duplication pt5
* Add versions switches to all transaction related RPCs
* Integrate response with newly defined structures
* Add debug messages for RPCs that don't return errors
* Add inline documentation for all transaction related RPCs
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Refactor - Undo v1 & v2 code duplication pt6
* Remove apiv2
* Move StructuredResponse & TxHistoryArgs to main rpc types.go
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Refactor - Undo v1 & v2 code duplication pt7
* Create contract, pool, staking & transaction services
* Move apis into correct services
* Remove util.go (functions are now baked into RPCs in pool.go)
* Remove transaction.go (functions/methods are distributed among created services)
* Update changes for StructuredResponse
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Refactor - Add rpc server start/stop to pkg
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [node] Refactor - use new RPC start / stop for servers
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [hmy] Refactor - rename network.go to net.go to match rpc
* Change names for consistency with rpc pkg
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* fix go lint & go imports
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Refactor - Fix GetTransactionReceipt for staking txs
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Refactor - Rename v1 & v2 struct to not have leading 'RPC'
* Update comments
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
* [rpc] Refactor - make defaultBlocksPeriod be the num blocks per epoch
Signed-off-by: Daniel Van Der Maden <dvandermaden0@berkeley.edu>
1. Remove eth rpc code and unnecessary changes from
7a0f18f92b. Import the package instead.
2. Move HmyAPIBackend into core package so it has more access to core.
3. Add API interface for services.
4. Start RPC for all roles, for both HTTP (baseport+10) and WS (baseport+20).
3. Keep implemented APIs but move to internal/hmyapi package.