* [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>
* Return the Ethereum tx hash for Ethereum txs
* fix txn lookup check
* Fix test
* use the right txn hash
* fix nil pointer on txn lookup
Co-authored-by: Sebastian Johnsson <sebastian.johnsson@gmail.com>
* 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
* 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>