* Add logic to do aggregated reward distribution
* Fix build and consensus
* add aggregated reward logic
* refactor payouts
* Fix batch scheduling
* test code
* revert test code
* more comments
* [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>
* [rawdb] add error handling to all rawdb write. Add fdlimit module. Fix the node stuck
* [core] switch back the batch write condition in InsertReceiptChain
* [core] add comments on isUnrecoverableErr
* [node] Unused package level big.Int
* [p2p] Throttle receives to a max of 100
* [project] Remove msgq
* [node][p2p] Only allow 100 max message handling at time
* [node][p2p] Throttle max message handler with Weighted Semaphore - init w/ uniform weight
* [node] Use go routine for passing handled block
* [p2p] Leftover commented out
* [node] Add log for when cannot pay semaphore cost
* [node] Bump max message handlers
* [internal] Remove file_embed
* [project] Remove unused file, unused function
* [consensus] Unused values
* [config] Unused field & function
* [internal] Unused address & hash
* [project] More unused tests, values, types
* [project] Move conn logger just to bootnode
* [rpc] Remove dead functions
* [internal] More unused functions
* [project] Remove dead keystore dir package
* [p2p] Need lock to grab all Topics
* [node] Force side effect of topic join, give each topic own weighted semaphore
* [project] Dead test
* [node] If fields always same, then just use the constant
* [project] Remove overcomplicated ctxerror
* [project] Remove more dead tests, adjust error replacing ctxerror
* [project] More dead tests, fix travis complaint on Errorf
* [node.sh] Remove is-genesis
* [slashing] Add Slashing fields in header, only available from v3 onward
* [slashing] Add Banned field to validator struct
* [consensus] Remove dead code
* [node] Use named value for shardID of beaconchain
* [consensus] No need to memory thrash Buffer
* [slashing] Add slash record type, stub out BroadcastSlash
* [cmd] Bump 2019 -> 2020
* [votepower] Add ballot results structs
* [quorum][slash] Refactor quorum to accomdate extra data points needed for slashing
* [consensus] Begin refactor of consensus leader messages
* [consensus] Accomdate consensus for changed method signatures in quorum
* [project] Whitespace and helper function
* [block] More comments and logs for fields that do not make sense in earlier v version
* [slashing] More comments, field renames, tag Edgar TODO
* [quorum] Undo name change of Prepare to Announce, was mislead by other existing code
* [consensus] Factor out enums to core/values, begin factor out of consensus mechanisms
* [consensus] Make Mechanism explicit
* [consensus] Add ViewChange to QuorumPhase
* Update core/values/consensus.go
Co-Authored-By: Eugene Kim <ek@harmony.one>
* Update core/values/consensus.go
Co-Authored-By: Eugene Kim <ek@harmony.one>
* [mainnet-release] Address code comments
* [staking][consensus][project] Remove txgen, factor out consensus
* [consensus] Factor out PublicKeys
* [txgen] Bring back txgen
* [project] Undo prior consolidation of error values under core
* [consensus] Update tests using quorum decider
* [consensus] Fix overlooked resets during refactor
* [consensus] Fix wrong check of quorum phase
* [consensus] Address leftover TODO for prepare count
* [consensus] Simplfy reset switch
* [consensus] Fix mistake of wrong ReadSignature in ViewChange, need sender, not node PubKey