Skip to content

Commit

Permalink
chore: merge develop to evm (#653)
Browse files Browse the repository at this point in the history
* deps: clean dependendies and add check script (#450)

* Ignore eslint in scripts

* Use async calls

* Ignore tests

* Show testonly dependencies

* Calculate deps

* Add docs

* Implement methods on Package

* Cleanup

* Rename deps to imports

* Fix exceptions

* Pass method

* Go trough all packages

* Improve logs

* Rename file

* Remove old scripts

* Exit with 1 if failing

* Fix validator-set-vote-weighted

* Validator set static

* Fix validator

* Fix utils

* Fix transaction pool

* Fix test-framework

* Fix packages

* Add deps check

* style: resolve style guide violations

* Fix ci

* Fix api

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* feat(bootstrap): compare stored genesis block with config (#451)

* Check stored commit

* Empty commit

* refactor(processor): log verification errors (#452)

* Remove console logs

* Remove forger errors

* Remove UnexpectedError

* Remove extra exceptions

* Add ValidatorExceptions

* Handler throws errors

* Improve logs

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* chore: change banner format to jpeg (#453)

* Add banner jpeg

* Remove png version

* Update readme

* release: 0.0.1-alpha.8 (#454)

* release: 0.0.1-alpha.8

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* fix(validator-set-vote-weighted): active validators is subset of registered validators (#466)

* Mak method private

* Build validators

* Local variable

* Use for of loop

* Check active validators

* Fix tests

* fix(processor): `validatorVoteBalance` calculation (#467)

* Add pg:reset

* Decrease vote balance

* Include fee

* Remove unused line

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* chore: docker validator support (#468)

* release: 0.0.1-alpha.9 (#469)

* release: 0.0.1-alpha.9

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* chore: fix publish GitHub workflow (#470)

* Run on pull request

* No git checks

* set token

* Revert to original build conditions

---------

Co-authored-by: oXtxNt9U <[email protected]>

* refactor(transactions): move amount deduction into transaction handlers (#472)

* refactor transfer amount deduction

* cleanup

* update schema tests

* feat: add `env:paths:clear` commands (#473)

* Clear plugins & exports

* Clear data

* Remove variables

* Add paths to contracts

* Remove config paths

* Cache cache, log, temp

* Cleanup

* Add command to api

* Add clear all

* Fix case

* release: 0.0.1-alpha.10 (#474)

* release: 0.0.1-alpha.10

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* feat(crypto-transaction-username-registration): limit one transaction by sender in pool (#475)

* Rename variable

* Fix text

* Check transaction already in the pool

* feat(validator): log loaded validators (#477)

* Inject

* Print method

* Print on bootstrap

* Rename method

* Execute after state check

* Improve text

* Log 0 validators

* Determine activa & standby

* Wallet to string

* chore: fix typo in transaction fee errors (#476)

* feat(state): implements `sizeOfIndex` on WalletRepository (#479)

* Add sizeOfIndex

* Add initial implementation

* Wallet repository clone

* Implement on wallet repo clone

* Add missing attribute

* FIx validator resignation

* release: 0.0.1-alpha.11 (#480)

* release: 0.0.1-alpha.11

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* feat: port to ES modules (#478)

* initial browser support

* add package link script

* port api-common

* port api-database

* port api-development

* port api-http

* port api-sync

* port api-transaction-pool

* port api

* port bootstrap

* port cli

* port configuration-generator

* port consensus

* port webhooks

* port validator

* port validator-set-vote-weighted

* port validator-set-static

* port validation

* port utils

* port transactions

* port transaction-pool

* port test-framework

* port state

* port serializer

* port proposer

* port processor

* port p2p

* port networking-ntp

* port networking-dns

* port logger-winston

* port logger-pino

* port kernel

* port fees

* port fees-static

* port fees-managed

* port fees-burn

* port database

* port crypto-worker

* port crypto-wif

* port crypto-validation

* port crypto-transaction

* port crypto-transaction-vote

* port crypto-transaction-validator-resignation

* port crypto-transaction-validator-registration

* port crypto-transaction-username-resignation

* port crypto-transaction-username-registration

* port crypto-transaction-transfer

* port crypto-transaction-multi-signature-registration

* port crypto-transaction-multi-payment

* port crypto-signature-schnorr

* port crypto-signature-schnorr-secp256k1

* port crypto-signature-ed25519

* port crypto-signature-ecdsa

* port crypto-signature-bls12-381

* port crypto-messages

* port crypto-key-pair-schnorr

* port crypto-key-pair-ed25519

* port crypto-key-pair-ecdsa

* port crypto-key-pair-bls12-381

* port crypto-hash-wasm

* port crypto-hash-noble

* port crypto-hash-bcrypto

* port crypto-consensus-bls12-381

* port crypto-config

* port crypto-commit

* port crypto-block

* port crypto-address-ss58

* port crypto-address-keccak256

* port crypto-address-bech32m

* port crypto-address-bech32

* port crypto-address-base58

* port core

* port contracts

* port container

* update tsconfig to nodenext

* fix kleur/color

* update core/bin/run.js

* command fixes

* lmdb import fixes

* p2p fixes

* ajv fix

* get __dirname

* update pnpm-lock.yaml

* remove unused @pm2/io dependency

* replace fileURLToPath

* use filesystem service inside kernel

* cleanup

* update TypeScript to 5.4.2

* move __dirname into local scope

* replace fast-memoize with memoizee

* test-runner packacge

* re-export test-runner

* tests: utils

* tests: validation

* tests: crypto-config

* tests: container

* tests: kernel

* tests: transactions

* style: resolve style guide violations

* fix more tests

* fix transaction dependency lookup

* fix p2p tests

* more fixes

* fix cli and configuration-generator

* cli fixes

* kernel fixes

* transaction-pool

* all pass

* commit dirty

* style: resolve style guide violations

* fix api-http integration tests

* fix deps:check

* runtime fixes

---------

Co-authored-by: oXtxNt9U <[email protected]>
Co-authored-by: sebastijankuzner <[email protected]>

* fix(api): broken entrypoint (#481)

* fix api entrypoint

* fix more commands

* refactor(transaction-pool): return tx indexes as integers (#483)

* return tx indexes as integers

* fix compile error

* chore: update dependencies (#482)

* update dependencies

* Empyt commit

---------

Co-authored-by: sebastijankuzner <[email protected]>

* fix wallet response (#485)

* fix(configuration-generator): create genesis block script (#484)

* fix create genesis block script

* Empty commit

---------

Co-authored-by: sebastijankuzner <[email protected]>

* refactor(core): rename run script to have explicit file extension (#486)

* ensure run script has explicit file extension

fixes ERR_UNKNOWN_FILE_EXTENSION

* empty commit

* fix: use .js extension in `start` commands (#487)

* Fix start commands

* Fix package.json

* Fix tests

* release: 0.0.1-alpha.12 (#488)

* release: 0.0.1-alpha.12

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* fix(core): resolve correct plugin `package.json` path (#489)

* Fix package manifest

* Skip tests

* release: 0.0.1-alpha.13 (#490)

* release: 0.0.1-alpha.13

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* feat(cli): determine correct entrypoint paths (#491)

* Add setup class

* Fix setup

* Bind

* Fixes

* Use setup paths

* Use in api

* Remove logs

* Fix tests

* Cleanup tests

* fix(test-framework): list project packages in dependencies (#492)

* Use direct dependencies

* Empty commit

* Fix dependencies

* Fix dependencies

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* exclude genesis transactions from fee statistics calculation (#494)

* fix(crypto): manage static fees via milestones (#493)

* add static fees to milestones

* update tests

* style: resolve style guide violations

* initialize static fees only in a single place

---------

Co-authored-by: oXtxNt9U <[email protected]>

* fix(api): sync active milestones on change (#495)

* sync active milestones on change

* fix test

* fix(api-http): add missing fields to transaction resource (#496)

* improve error logging

* populate all transaction fields

* review

* remove type cast

* add comment

* simplify more

* rename block model too and add assert

* fix paths according to the latest paths naming convention (#497)

* refactor(p2p): replace ip with `url` in api nodes (#498)

* api node urls

* update protobuf definitions

* update test fixtures

* cleanup

* style: resolve style guide violations

---------

Co-authored-by: oXtxNt9U <[email protected]>

* fix(transaction-pool): invalid tx error reporting (#500)

* fix tx pool error reporting

* empty commit

* test: use `tsx` TypeScript loader (#499)

* Add tsx

* Fix runner

* Fix test-runner scripts

* Update tsconfig

* Fix tests

* Use test config

* Fix api tests

* api-common

* Api-database

* api-development

* api-http

* api-sync

* api-transaction-pool

* bootstrap

* cli partial

* Fix cli tests

* Runner extends contracts

* Configuration generator

* Consensus

* Container

* Contracts

* Core

* Crypto address

* Crypto block

* Cypto commit

* Crypto config

* Crypto

* Crypto messages

* Crypto signature

* Crypto transaction

* Crypto

* Database

* Fees

* Kernel

* Logger pino

* Logger winston

* Networking

* Server

* Processor, proposer, serializer

* State

* Transaction pool

* Transactions

* Utils

* Validation

* Validator

* Validator set

* Webhooks

* Remove tsm

* Fix integration tests

* Update lint CI

* Fix dependencies

* Prettier

* Lint

* Perttier

* style: resolve style guide violations

* refactor: remove `__dirname` usage (#501)

* Remove __dirname

* Fix tests

* Factory require config

* test(functional/consensus): add skeleton for functional tests (#503)

* Prepare base structure

* Add test runner

* Base test

* Add base packages

* Register base packages

* Add config

* Add pacakges

* Export bootstrap

* Export individual bootstrappers

* Register bootstrappers

* Extract bootstrapper itnerface

* Test

* Use tsm

* Pass url to PluginManifest

* Register service provider

* Setup up to validator package

* Register all necessary packages

* Add missing packages

* Boot

* Register transactions

* Process genesis

* Run consensus

* Add worker

* Fix worker

* Fix broadcaster

* refactor(consensus-storage): extract storage logic into package (#502)

* Add consensus storage package

* Prepare service provider

* Remove storage from consensus

* Add dependencies

* Move root into consensus storage

* Rename identifier

* Fix identifiers

* Edit contracts

* Fix deps

* Update packages/consensus-storage/README.md

Co-authored-by: oXtxNt9U <[email protected]>

---------

Co-authored-by: oXtxNt9U <[email protected]>

* milestone generator add static fees (#504)

* test(functional/transaction-pool-api): initial boilerplate and tests (#505)

* update gitignore

* add tx pool api boilerplate and basic broadcast

* add signWithKeyPair to tx builder

* update functional consensus milestones

* wait for block and assert committed transaction

* invalid transfer test

* assert invalid transactions are not committed

* test with invalid / malformed signature

* fix(test-runner): rethrow error in runHook (#506)

* bubble up error thrown in runHook

* Empty

---------

Co-authored-by: sebastijankuzner <[email protected]>

* refactor(database): return commits instead blocks (#507)

* getBlock to getCommit

* Fix tests

* getLastBlock -> getLastCommit

* Fix tests

* Implement isEmpty

* Fix tests

* feat(transaction-pool): support `in-memory` database (#510)

* Support im memory database

* Deps

* Test

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* test(functional/consensus): prepare package replacements, asserts and p2p layer (#508)

* Bind consensus storage

* Mock database

* Add contracts

* Use relative paths

* Prepare 2 setups

* Run 2 nodes

* Make log protected

* Make MemoryLogger fields protected

* Prepare custom logger

* Prepare p2p layer

* Fix p2p

* MemoryDatabase

* Load crypto

* Read validators

* Prepare validators

* Use common config

* Add snooze for one block

* Stop node

* Snooze for block

* Prepare smaller config

* Asserts

* Fix and check TS code

* Add script for check & test

* Use strict true

* Support plugin options

* Assert validators

* refactor(kernel): create bootstraper for shutdown signals  (#511)

* Register error handler first

* Move listen to shutdown signals into bootstrapper

* test(functional/transaction-pool-api): test all transaction types (#509)

* missing dependency

* transfer

* vote

* username-registration

* username-resignation

* validator-registration

* validator-resignation

* multipayment

* fix default payload

* update utils

* multi signature test plus fixes

* fix compile error

* test transfer with multisig

* rename tests for clarity

* add wallets to context

* tsc strict

* add snapshot based balance checks

* reduce block time

* review

* test(functional/transaction-pool): increase vote coverage (#512)

* votes

* empty commit

* test switch vote and unvote for non voted validator

* test(functional/transaction-pool): increase validator registration coverage (#513)

* votes

* empty commit

* validator registration

* empty commit

* test(functional/transaction-pool): increase validator resignation coverage (#514)

* votes

* empty commit

* validator resignation

* empty commit

* test(functional/transaction-pool): increase username registration coverage (#515)

* votes

* empty commit

* username registration

* empty commit

* test(functional/transaction-pool): increase username resignation coverage (#516)

* votes

* empty commit

* username resignation

* empty commit

* fix(kernel): minority and majority calculation (#520)

* Fix majority, minority

* Tests

* Add extra tests

* fix(api-http): allow 0 nonce in schema (#521)

* Allow nonce 0

* Empty commit

* fix(api-http): implement missing `/transaction/fees` route (#523)

* implement missing route /transaction/fees

* add test

* style: resolve style guide violations

* remove unused query param

---------

Co-authored-by: oXtxNt9U <[email protected]>

* test(functional/transaction-pool): increase multi sig registration coverage  (#517)

* more multi signature tests

* empty commit

* update min participants

* test missing participant signature

* test(functional/transaction-pool): add more misc coverage  (#518)

* more multi signature tests

* empty commit

* add misc tests

* empty commit

* release: 0.0.1-alpha.14 (#522)

* release: 0.0.1-alpha.14

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* feat(consensus): emit events (#524)

* Add bootstrapped

* New round

* Add events

* Dispatch events

* Fix tests

* test(functional/transaction-pool): extract transaction builders into separate package (#525)

* introduce test-transaction-builders package

* use test transactions package

* include type when logging rejected tx

* style: resolve style guide violations

* fix deps:check

* style: resolve style guide violations

---------

Co-authored-by: oXtxNt9U <[email protected]>

* test(functional/consensus): test proposal scenarios (#526)

* Add initial test

* Rename base test

* Optional blockId

* Full test

* Bind custom proposer selector

* Check generatorPublic key

* Make consensus methods protected

* Expose boot and bootstrap methods

* Skip error handler registration

* Make consensus methods public

* Assert blockRound

* Implement *Many helpers

* Fix base test

* Force async to p2p

* Test missing propose

* Simulate double propose

* Simulate 50:50 split

* Remove assertCommitValidators

* Record messages

* Asserts

* majority minority split

* SnozeForBlock with height

* Assert next block is fine

* Check multiple rounds

* Check invalid proposer

* Add CI for functional

* Rename tests to proposal

* Rename tests

* fix(api-http): delegate search (#527)

* Fix delegate search in API

* Initial support for sorting on jsonb fields

* Update tests

* style: resolve style guide violations

---------

Co-authored-by: oXtxNt9U <[email protected]>

* refactor(p2p): log route on codec error (#528)

* Log error

* Allow empty

* test(functional/transaction-pool): add .gitkeep (#530)

* add .gitkeep

* empty commit

* test(functional/consensus): test prevote & precommit scenarios (#529)

* Check minority not prevoting

* Test null prevotes

* Extract methods to utils

* Check random block

* Check with multiple prevotes

* Lint

* Fix ts errors

* Disable unicorn/no-useless-undefined

* Check missing precommits

* Test precommits

* Check multiple messages

* fix(configuration-generator): update export paths (#531)

* Update paths

* Empty

* feat(api-development): add `peers/banned` endpoint (#532)

* Disposer returns list of banned peers

* Add endpoint

* Add pagiantion

* Format timeout

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* test(functional): update ci workflow (#534)

* run all functional tests in ci

* test

* style: resolve style guide violations

* test

* revert me

* style: resolve style guide violations

* include matrix name

* revert trigger

---------

Co-authored-by: oXtxNt9U <[email protected]>

* test(functional/consensus): test rejection of invalid block proposals (#533)

* custom funded wallet provider

* REVERT ME: debug logs

* export Proposer

* custom block proposal

* emit event on invalid block

* add assertInvalidBlock

* extract custom proposal function

* ensure wallet exists on each node

* invalid proposals

* seed with randomBytes

* log error instance on mismatch

* lint

* Revert "REVERT ME: debug logs"

This reverts commit defdf7e.

* deps: update lmdb (#535)

* Update lmdb

* Log if commit cannot be read

* Await transaction flushed

* Await flush

* test(functional): fix `MaxListenersExceeded` warning (#537)

* fix MaxListenersExceededWarning

* empty commit

* feat(api-http): support sorting on jsonb attributes (#538)

* support sort on wallet attributes

* NULLS LAST

* tests

* style: resolve style guide violations

---------

Co-authored-by: oXtxNt9U <[email protected]>

* fix(p2p): peer ban and validate ip plugin (#539)

* Skip header check if peer is not in repo

* Validate peer ip

* Remove repo check

* Validate ip and data separately

* Fix test

* Update default peer ban time

* feat(cli): add --overwrite flag to `config:publish:custom` (#536)

* expose `skip` callback

* update publish:custom command

* style: resolve style guide violations

* Make fields optional

* Require flags error

---------

Co-authored-by: oXtxNt9U <[email protected]>
Co-authored-by: sebastijankuzner <[email protected]>

* feat(crypto): add browser support for bls12-381 packages (#540)

* add bls12-381 browser support

* update test

* style: resolve style guide violations

* dep check exception

---------

Co-authored-by: oXtxNt9U <[email protected]>

* release: 0.0.1-alpha.15 (#542)

* release: 0.0.1-alpha.15

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* fix(p2p): postTransactions response schema and proto (#543)

* Update proto

* Build proto

* Fix schema

* Fix tests

* refactor(api): show `meta` field in response at top (#545)

* show `meta` field in response at top

* style: resolve style guide violations

* eslint: disable key sort

---------

Co-authored-by: oXtxNt9U <[email protected]>

* fix(api-http): change default sort for `/delegates` (#544)

* sort /delegates by rank by default

* empty commit

* refactor(block-processor): log commit round (#546)

* Log block round

* Empty commit

* perf(consensus): verify proposal signatures on main thread (#548)

* Verify signature on main thread

* Empty commit

* refactor(contracts): remove Consensus prefix from contracts (#549)

* Rename contracts

* Empty commit

* refactor(consensus): remove hasValidBlockGenerator check (#550)

* Remove hasValidBlockGenerator check

* Empty commit

* fix(api-http): sort delegates by rank asc by default (#552)

* sort delegates by rank asc by default

* empty commit

* test(e2e): add e2e tests and workflow (#547)

* network with 3 nodes

* add check for target block height

* workflow

* revert me

* exclude e2e directory

* style: resolve style guide violations

* docker fixes

* test

* add timeout

* test

* wait for checks to finish

* run detached

* show logs

* style: resolve style guide violations

* increase sleep

* increase target height

* revert trigger condition

* revert changes to defaults

* style: resolve style guide violations

* reply with 200

* Update tests/e2e/consensus/checks/index.mjs

Co-authored-by: Sebastijan K. <[email protected]>

* reduce timeout for now

---------

Co-authored-by: oXtxNt9U <[email protected]>
Co-authored-by: Sebastijan K. <[email protected]>

* release: 0.0.1-alpha.16 (#553)

* release: 0.0.1-alpha.16

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* feat(validator): support secret encryption (#554)

* remove skipValidation flag

* write validator keystore

* support validator with encrypted passphrase

* update commands

* update tests

* optional keystore

* style: resolve style guide violations

* support --password

* review

* style: resolve style guide violations

---------

Co-authored-by: oXtxNt9U <[email protected]>

* perf: deserialize proposal in steps (#551)

* Rename ProposedBlock to ProposedData

* Remove ProposedBlockJson

* Rename proposal.block to proposal.data

* Fix consensus tests

* Fix crypto-message tests

* Add getData and isDataDeserialized

* Fix consensus tests

* Test proposal

* Rename method

* Make makeProposedDataFromBytes public

* Make proposal injectable

* Fix tests

* Add deserialize to proposal

* Check status before returning data

* Include deserializer

* Fix tests

* Pass only serialized data to proposal

* Deserialize in proposal processor

* Deserialize in handler

* Remove todo

* Fix tests

* Fix header

* Verify lock proof after deserialization

* Fix functional tests

* Fix proposal types

* Fix proposal creation

* perf(consensus): run pending RoundStates only once (#555)

* Set pending jobs

* Remove key

* Reduce complexity

* fix: dispatch block events with expected payload (#558)

* dispatch BlockEvent.Forged again

* dispatch only block instead of whole commit

* fix

* test

* update e2e check

* chore: upgrade pnpm v9 (#556)

* upgrade pnpm v9

* empty commit

* support webhook condition on nested key (#557)

* improve stability (#564)

* fix(webhooks): restore webhooks on boot (#562)

* restore webhooks on boot

* skip events during bootstrap

* skip all but kernel events

* style: resolve style guide violations

* review

---------

Co-authored-by: oXtxNt9U <[email protected]>

* chore(ci): add workflow to enforce minimum commit count (#565)

* check minimum commit count

* style: resolve style guide violations

* rename

---------

Co-authored-by: oXtxNt9U <[email protected]>

* release: 0.0.1-alpha.17 (#566)

* release: 0.0.1-alpha.17

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* fix(api-sync): upsert version on bootstrap (#567)

* upsert version on bootstrap

* empty commit

* feat: add `blockPrepareTime` to milestones (#568)

* Add blockPrepareTime

* Nest

* Scheduler

* Sync

* Fix generator

* Test config generator

* Test crypto config

* Fix scheduler

* Add test

* Fix functional tests

* stageTime to stageTimeout

* Fix api-http tests

* refactor(api-sync): add `syncInterval` option (#569)

* Implement getSyncIntervalMs on abstractListener

* Add syncInterval defaults

* Use configuration

* fix(api-sync): process transactions in chunks to support very large blocks (#572)

* sync transactions in chunks

* style: resolve style guide violations

---------

Co-authored-by: oXtxNt9U <[email protected]>

* refactor(consensus): prepare block after commit (#571)

* Log on round start

* Propose after commit

* Use timestamp

* Rename methods

* Fix tests

* Rename method

* Fix tests

* Deps

* Fix consensus tests

* Fix tests

* Update packages/validator/source/validator.ts

Co-authored-by: oXtxNt9U <[email protected]>

* style: resolve style guide violations

---------

Co-authored-by: oXtxNt9U <[email protected]>
Co-authored-by: sebastijankuzner <[email protected]>

* refactor(consensus):  dispatch *any events only once per round (#574)

* Return scheduler status

* Test scheduler

* Skip multiple dispatches

* Tests

* fix(api-http): support query criteria based on wallet attributes (#573)

* wallet attributes criteria

* delegate attributes criteria

* return BadRequest if request results in invalid query

* test for attribute query

* style: resolve style guide violations

* rename

---------

Co-authored-by: oXtxNt9U <[email protected]>

* feat(api-http): query round by number (#591)

* fix 0 vote balance

* add round parameter

* update tests

* rename route

* feat(crypto-transaction-validator-registration): accept registration from multisig wallet (#593)

* remove check

* add tests

* cleanup obsolete exception class

* style: resolve style guide violations

---------

Co-authored-by: oXtxNt9U <[email protected]>

* feat(api-http): expose validator round votes (#598)

* add column

* sync round votes

* return votes from controller

* update test

* style: resolve style guide violations

---------

Co-authored-by: oXtxNt9U <[email protected]>

* release: 0.0.1 alpha.18 (#599)

* release: 0.0.1-alpha.18

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* fix(api-sync): make bootstrap less verbose (#600)

* reduce verbosity of bootstrap

* empty commit

* feat: run transaction-pool in worker thread (#610)

* refactor(transaction-pool-service): rename package (#575)

* Rename package

* Empty commit

* Fix deeps check

* Fix p2p tests

* Fix e2e tests

* Fix workflow

* feat(transaction-pool): create CLI package (#576)

* Clone API package

* Use mainsail-tx-pool process name

* Neutral tests names

* Rename api: to tx-pool:

* Rename commands

* Scripts

* Deps

* Generate unit workflow

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* feat(api-common): add JSON-RPC support (#577)

* Bind rpc processor

* Extract RPC contracts

* Add getRPCProcessor

* Validate schema

* Fix validation

* Add method

* Add call action

* Register action

* Handle methodNotFound

* Validate params & handler error

* Move plugin

* Use common utils

* Remove console.logs

* Extract prepareRpcError handler

* Fix imports and deps

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* feat(api-common): use AJV for JSON_RPC schema validation (#580)

* Add ajv

* Add schema

* Export validation

* Add Validator.hasSchema

* Register schema

* Fix schema

* Verify payload

* Use ajv

* style: resolve style guide violations

* Fix deps

* Fix api-http tests

---------

Co-authored-by: sebastijankuzner <[email protected]>

* refactor(p2p): remove `postTransactions` route (#581)

* Remove postTransactions route

* Remove postTransactions

* Remove post transactions utils

* Remove broadcaster

* Rebuild proto

* Fix p2p tests

* Fix tests

* feat: implement `transaction-pool-server` & `transaction-pool-client` packages (#583)

* Add packages & crypto

* Add transaction pool api

* Add deps

* Add transaction pool server

* Add defaults

* Test controller

* Boot server

* Add client package

* Register client

* Add contract

* Register action

* Add base handler

* Remove test transactions

* Client getTx

* Replace TX pool service with client

* Fix schema validation

* Remove transactions from api-development

* Remove from bootstrapper

* Remove from processor and validator

* Remove api-transaction-pool from core

* Use optional query on TX

* Log errors

* style: resolve style guide violations

* Fix validator tests

* Fix consensus tests

* Temporary disable transaction-pool-api tests

* Update e2e app.json

---------

Co-authored-by: sebastijankuzner <[email protected]>

* feat(state): supports state sync using delta changes (#584)

* Implement changesToJson

* Register onCommit

* Add address

* Add changesToJson on WalletRepository

* Return indexes

* Store to json

* Add interface

* Add commit action

* Apply changes to repostiory

* Apply wallet changes

* Apply changes

* Set and forget attributes

* Skip unknown attributes

* Errors

* style: resolve style guide violations

* Fix tests

* Fix

* Comment

---------

Co-authored-by: sebastijankuzner <[email protected]>

* feat(transaction-pool-api): add transactions endpoints (#585)

* Rename route

* /unconfirmed

* /unconfirmed/{id}

* /types

* /unconfirmed

* Remove unused tag

* feat(transaction-pool): implement `get_transactions` action (#586)

* Collate transactions

* Set config height

* Transaction bytes return buffer

* Move transaction validator

* Validate transactions

* Add crypto block

* Simplify validator

* Test get transactions

* Remove collator

* Rename identifiers

* Rename contract

* Set failed transactions

* style: resolve style guide violations

* Empty commit

* Fix tests

* Fix consensus tests

---------

Co-authored-by: sebastijankuzner <[email protected]>

* refactor(crypto-transaction): make `id` mandatory (#587)

* Make id mandatory

* Make id mandatory

* Make type group mandatory

* Make network mandatory

* feat(transaction-pool): sync block and transactions (#588)

* Post failed transactions

* Commit block

* Increase payload size

* Reset failed transactions

* Set last block

* feat(transaction-pool): list & import snapshots (#589)

* Export state

* Add snapshot service

* Add action

* list snapshots

* Add import snapshot

* Call import snapshot

* Rename field

* Export from snapshot service

* Extract paths

* Use async fs methods

* Add remove snapshots

* List snapshots as promise

* Use list snapshots

* Implement import

* File changes

* Fix restore snapshots

* Restore snapshots

* Handle import snapshot

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* feat(state): add `skipUnknownAttributes` option to StateRepository (#592)

* Log errors

* Fix error messages

* Allow unknown attributes

* Make wallet injectable

* Inject attribute repository

* Rename repository to state repository

* StateRepositoryFactory

* Rename defaults

* Read from defaults

* Add to options

* Extract stateRepositoryFactory

* Fix wallet factory

* fix tests

* Fix tests

* feat(transaction-pool): implement `get_status` JSON_RCP endpoint (#595)

* Implement get status

* Log status

* Endpoint returns data

* Disable e2e

* feat(transaction-pool): add  request and response schemas for JSON_RPC actions (#596)

* Add commit interfaces

* Add commit schema

* Get Status contracts

* GetTransactions contracts

* ImportSnapshot contracts

* ListSnapshots contracts

* Validate response

* Validate JsonRPC response

* Move schemas to common

* refactor(state): recreate state on snapshot restore (#597)

* Recreate base store

* Fix bootstrapper

* refactor(kernel): replace child processes with worker threads (#601)

* Use workers

* Limit crypto worker count

* Remove signal for shutdown

* feat(transaction-pool): run transaction pool in worker thread (#602)

* Remove transaction-pool

* Add tx pool plugins

* Add core and tx-pool entries

* Load core

* Set thread name

* Add thread name

* Load crypto worker

* Remove requiredByWorker

* Clone

* Cleanup

* Extract contracts

* Update contracts

* Determine if is worker

* Extract worker package

* Register package

* Update contracts

* Fix bindings

* Boot

* Fix

* Add app.json

* Fix app

* Fix functional tests

* CI Unit

* Remove workerLoggingEnabled

* fix(transaction-pool-worker): update local module import workaround (#605)

* fix workaround for local module import with custom launch config

* remove try catch

* refactor(transaction-pool): disable snapshot export (#604)

* TxPoolClient is mandatory

* Check snapshots enabled

* Fix factory

* refactor(transaction-pool-worker): implement IPC actions (#606)

* Import snapshot

* Improve handler

* Implement commit

* Fix contract

* Extract commit handler

* Implement get transactions

* Extract import snapshot

* Remove server client packages

* Remove client instances

* Remove workerPool

* Remove old contracts

* Fix tests

* Regenerate unit CI

* chore: merge develop to tx-pool (#607)

* fix(api-http): support query criteria based on wallet attributes (#573)

* wallet attributes criteria

* delegate attributes criteria

* return BadRequest if request results in invalid query

* test for attribute query

* style: resolve style guide violations

* rename

---------

Co-authored-by: oXtxNt9U <[email protected]>

* feat(api-http): query round by number (#591)

* fix 0 vote balance

* add round parameter

* update tests

* rename route

* feat(crypto-transaction-validator-registration): accept registration from multisig wallet (#593)

* remove check

* add tests

* cleanup obsolete exception class

* style: resolve style guide violations

---------

Co-authored-by: oXtxNt9U <[email protected]>

* feat(api-http): expose validator round votes (#598)

* add column

* sync round votes

* return votes from controller

* update test

* style: resolve style guide violations

---------

Co-authored-by: oXtxNt9U <[email protected]>

* release: 0.0.1 alpha.18 (#599)

* release: 0.0.1-alpha.18

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* fix(api-sync): make bootstrap less verbose (#600)

* reduce verbosity of bootstrap

* empty commit

* Increase version

---------

Co-authored-by: oXtxNt9U <[email protected]>
Co-authored-by: oXtxNt9U <[email protected]>
Co-authored-by: sebastijankuzner <[email protected]>

* test(functional): fix transaction-pool-api tests (#609)

* Add custom pool worker

* Empty

* Enable tests

* test(ci): fix e2e tests (#608)

* Enable E2E tests

* Empty commit

* Update app.json

* Fix

* enable hapi debug logs

* fix invalid config lookup

* style: resolve style guide violations

---------

Co-authored-by: oXtxNt9U <[email protected]>
Co-authored-by: oXtxNt9U <[email protected]>

---------

Co-authored-by: sebastijankuzner <[email protected]>
Co-authored-by: oXtxNt9U <[email protected]>
Co-authored-by: oXtxNt9U <[email protected]>

* feat(transaction-pool-broadcaster): implement node verification and broadcast (#612)

* Add package

* Add peer

* Add peer repository

* Add verifier

* Add peer processor

* Defaults

* Bind identifiers

* Add broadcaster

* Skip verification

* Extract api node

* Register services

* Add index

* Fix

* Register broadcaster

* Set peer action

* Forget peer

* Use in actions

* Broadcast

* Remove after errors

* Use defaults

* Add env variables

* Remove send action

* Support worker events

* Remove peer

* Remove pending peers, verifier and processor

* Verify tx pool node

* Remove log

* Read port from defaults

* Read from defaults

* Remove identifiers

* Fix unit tests

* Fix deps

* Fix functional tests

* Update e2e app.json

* style: resolve style guide violations

* Fix ts error

---------

Co-authored-by: sebastijankuzner <[email protected]>

* fix(kernel): make crypto-worker and transaction-pool optional in app.json (#615)

* Make fields optional

* Add validation

* Add deps

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* fix(consensus): await proposal creation and reduce thread blocking (#617)

* Set timeout before handle

* Make proposal promise

* Add timeouts

* fix(bootstrap): set processor result on commit state (#618)

* set processor result on bootstrap

* empty commit

* fix(bootstrap): set genesis block after restore (#623)

* Restore before genesis

* Empty commit

* skip restore if database is empty

---------

Co-authored-by: oXtxNt9U <[email protected]>

* perf(crypto-block): skip deserialization on make (#625)

* Skip deserialization on make

* Fix crypto-block tests

* Fix test framework

* Fix database tests

* refactor(p2p): increase timeouts (#624)

* Empty commit

* Increase timeouts

* feat(validator): time limit transaction collation (#620)

* Time limit

* Empty commit

* Add defaults

* Use default

* Fix tests

* Set block prepare time

* feat(logger-pino): log worker thread name (#627)

* Remove ignores

* Update pino

* Update pino pretty

* Update rotating-file-stream

* Remove pid

* Show thread name

* Fix tests

* feat(block-processor): check future blocks (#628)

* Add dayjs

* Verify future blocks

* Add tolerance milestone

* Use tolerance

* Fix tests

* style: resolve style guide violations

* Fix integration tests

---------

Co-authored-by: sebastijankuzner <[email protected]>

* refactor(transaction-pool-worker): remove extra logs (#629)

* Remove commit messages

* empty commit

* refactor(transaction-pool-service): readd transactions on boot and milestone change (#630)

* Skip export

* Cleanup after block

* Re add transactions on milestone change

* Remove handlers

* Add start handler

* Fix tests

* chore(ci): fix deprecation warning (#634)

* use latest actions

* update script

* feat(transaction-pool-service): re-add transactions on invalid states (#632)

* Remove revert on sender state

* Remove forged transactions method

* Add initial commit methods

* Remove forged transactions

* Implement commit

* Remove failed transactions

* Cleanup is private

* Implement reAddTransactions transactions

* Add remove transactions

* Make remove methods sync

* Rename method to fixInvalidStates

* Call fixInvalidStates

* Cleanup service

* Remove asserts

* Remove removeTransaction

* Move commit to service

* Use debug logs

* Skip tests

* style: resolve style guide violations

* Fix worker

---------

Co-authored-by: sebastijankuzner <[email protected]>

* refactor(contracts): move events to contracts (#635)

* Add events

* Move events under contracts

* Fix tests

* Fix tests

* Void floating promises

* Move webhook events

* Fix webhook tests

* refactor(transactions): inject EventDispatcher (#636)

* Remove emitter in parameter

* Fix tests

* test(e2e): run network with less validators (#638)

* update e2e network config

* add 2 more nodes

* style: resolve style guide violations

---------

Co-authored-by: oXtxNt9U <[email protected]>

* feat(webhooks): add support for workers (#637)

* Emit events

* Boot only on main thread

* Move interfaces

* Move identifiers

* Use database contract

* Add webhooks to transaction pool

* Fix tests

* Add handler

* Listen to events

* Fix tests

* refactor(state): increase default export interval (#642)

* Increase export interval

* Empty

* refactor(api-sync): remove obsolete mempool transaction sync (#644)

* remove mempool sync

* delete fixture

* release:  0.0.1-alpha.19 (#645)

* release:  0.0.1-alpha.19

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* deps(core): add api-transaction-pool (#646)

* Include api-transaction-pool

* Fix deps

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* release: 0.0.1-alpha.20 (#647)

* release: 0.0.1-alpha.20

* style: resolve style guide violations

---------

Co-authored-by: sebastijankuzner <[email protected]>

* fix(p2p): remove block header from getStatus  (#650)

* Rebuild proto

* Update get status

* Update controller

* Fix tests

* style: resolve style guide violations

* Update schema

* style: resolve style guide violations

* Reply schema required fields

---------

Co-authored-by: sebastijankuzner <[email protected]>

* Remove duplicated method

* Set correct version

---------

Co-authored-by: sebastijankuzner <[email protected]>
Co-authored-by: Adrian Kerchev <[email protected]>
Co-authored-by: oXtxNt9U <[email protected]>
Co-authored-by: Edgar Goetzendorff <[email protected]>
Co-authored-by: oXtxNt9U <[email protected]>
  • Loading branch information
6 people authored Jul 3, 2024
1 parent b0bcdd4 commit 4ce7564
Show file tree
Hide file tree
Showing 114 changed files with 214 additions and 1,300 deletions.
2 changes: 1 addition & 1 deletion lerna.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"$schema": "node_modules/lerna/schemas/lerna-schema.json",
"useWorkspaces": true,
"version": "0.0.1-alpha.18"
"version": "0.0.1-alpha.20"
}
2 changes: 1 addition & 1 deletion packages/api-common/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@mainsail/api-common",
"version": "0.0.1-alpha.18",
"version": "0.0.1-alpha.20",
"description": "Common API building blocks for the Mainsail blockchain",
"license": "GPL-3.0-only",
"contributors": [],
Expand Down
2 changes: 1 addition & 1 deletion packages/api-database/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@mainsail/api-database",
"version": "0.0.1-alpha.18",
"version": "0.0.1-alpha.20",
"description": "API database for the Mainsail blockchain",
"license": "GPL-3.0-only",
"contributors": [],
Expand Down
7 changes: 0 additions & 7 deletions packages/api-database/source/contracts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import {
ApiNode,
Block,
Configuration,
MempoolTransaction,
Peer,
Plugin,
Receipt,
Expand Down Expand Up @@ -61,9 +60,6 @@ export type PeerRepositoryExtension = {
};

export type PeerRepository = ExtendedRepository<Peer> & PeerRepositoryExtension;
export type MempoolTransactionRepositoryExtension = {};
export type MempoolTransactionRepository = ExtendedRepository<MempoolTransaction> &
MempoolTransactionRepositoryExtension;

export type TransactionTypeRepositoryExtension = {};
export type TransactionTypeRepository = ExtendedRepository<TransactionType> & TransactionTypeRepositoryExtension;
Expand Down Expand Up @@ -130,9 +126,6 @@ export type PeerRepositoryFactory = (customDataSource?: RepositoryDataSource) =>
export type ReceiptRepositoryFactory = (customDataSource?: RepositoryDataSource) => ReceiptRepository;
export type TransactionRepositoryFactory = (customDataSource?: RepositoryDataSource) => TransactionRepository;
export type TransactionTypeRepositoryFactory = (customDataSource?: RepositoryDataSource) => TransactionTypeRepository;
export type MempoolTransactionRepositoryFactory = (
customDataSource?: RepositoryDataSource,
) => MempoolTransactionRepository;
export type ValidatorRoundRepositoryFactory = (customDataSource?: RepositoryDataSource) => ValidatorRoundRepository;
export type PluginRepositoryFactory = (customDataSource?: RepositoryDataSource) => PluginRepository;
export type StateRepositoryFactory = (customDataSource?: RepositoryDataSource) => StateRepository;
Expand Down
1 change: 0 additions & 1 deletion packages/api-database/source/identifiers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ export const Identifiers = {
BlockRepositoryFactory: Symbol.for("API<Factory.BlockRepository>"),
ConfigurationRepositoryFactory: Symbol.for("API<Factory.ConfigurationRepository>"),
DataSource: Symbol.for("API<DataSource>"),
MempoolTransactionRepositoryFactory: Symbol.for("API<Factory.MempoolTransactionRepositoryFactory>"),
Migrations: Symbol.for("API<Migrations>"),
PeerRepositoryFactory: Symbol.for("API<Factory.PeerRepositoryFactory>"),
PluginRepositoryFactory: Symbol.for("API<Factory.PluginRepositoryFactory>"),
Expand Down
1 change: 0 additions & 1 deletion packages/api-database/source/models/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
export * from "./api-node.js";
export * from "./block.js";
export * from "./configuration.js";
export * from "./mempool-transaction.js";
export * from "./peer.js";
export * from "./plugin.js";
export * from "./receipt.js";
Expand Down
94 changes: 0 additions & 94 deletions packages/api-database/source/models/mempool-transaction.ts

This file was deleted.

1 change: 0 additions & 1 deletion packages/api-database/source/repositories/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
export { makeApiNodeRepository } from "./api-node-repository.js";
export { makeBlockRepository } from "./block-repository.js";
export { makeConfigurationRepository } from "./configuration-repository.js";
export { makeMempoolTransactionRepository } from "./mempool-transaction-repository.js";
export { makePeerRepository } from "./peer-repository.js";
export { makePluginRepository } from "./plugin-repository.js";
export { makeReceiptRepository } from "./receipt-repository.js";
Expand Down

This file was deleted.

10 changes: 0 additions & 10 deletions packages/api-database/source/service-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import {
ApiNode,
Block,
Configuration,
MempoolTransaction,
Peer,
Plugin,
Receipt,
Expand All @@ -23,7 +22,6 @@ import {
makeApiNodeRepository,
makeBlockRepository,
makeConfigurationRepository,
makeMempoolTransactionRepository,
makePeerRepository,
makePluginRepository,
makeReceiptRepository,
Expand Down Expand Up @@ -65,7 +63,6 @@ export class ServiceProvider extends Providers.ServiceProvider {
Block,
Configuration,
Peer,
MempoolTransaction,
Plugin,
Receipt,
State,
Expand Down Expand Up @@ -116,13 +113,6 @@ export class ServiceProvider extends Providers.ServiceProvider {
makePeerRepository(customDataSource ?? dataSource),
);

this.app
.bind(Identifiers.MempoolTransactionRepositoryFactory)
.toFactory(
() => (customDataSource?: RepositoryDataSource) =>
makeMempoolTransactionRepository(customDataSource ?? dataSource),
);

this.app
.bind(Identifiers.PluginRepositoryFactory)
.toFactory(
Expand Down
2 changes: 1 addition & 1 deletion packages/api-development/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@mainsail/api-development",
"version": "0.0.1-alpha.18",
"version": "0.0.1-alpha.20",
"description": "Development API for the Mainsail blockchain",
"license": "GPL-3.0-only",
"contributors": [],
Expand Down
2 changes: 1 addition & 1 deletion packages/api-evm/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@mainsail/api-evm",
"version": "0.0.1-alpha.17",
"version": "0.0.1-alpha.20",
"description": "Ethereum JSON-RPC compatible API for the Mainsail blockchain",
"license": "GPL-3.0-only",
"contributors": [],
Expand Down
19 changes: 0 additions & 19 deletions packages/api-http/integration/routes/transactions.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import { request } from "../../test/helpers/request";

import cryptoJson from "../../../core/bin/config/testnet/core/crypto.json";
import transactions from "../../test/fixtures/transactions.json";
import unconfirmedTransactions from "../../test/fixtures/unconfirmed_transactions.json";
import transactionTypes from "../../test/fixtures/transactions_types.json";
import transactionSchemas from "../../test/fixtures/transactions_schemas.json";
import transactionFees from "../../test/fixtures/transactions_fees.json";
Expand Down Expand Up @@ -81,24 +80,6 @@ describe<{
assert.equal(data.data, transactions[transactions.length - 1]);
});

it("/transactions/unconfirmed", async () => {
await apiContext.mempoolTransactionRepository.save(unconfirmedTransactions);

const { statusCode, data } = await request(`/transactions/unconfirmed`, options);
assert.equal(statusCode, 200);
assert.equal(data.data, unconfirmedTransactions);
});

it("/transactions/unconfirmed/{id}", async () => {
await apiContext.mempoolTransactionRepository.save(unconfirmedTransactions);

const id = unconfirmedTransactions[unconfirmedTransactions.length - 1].id;

const { statusCode, data } = await request(`/transactions/unconfirmed/${id}`, options);
assert.equal(statusCode, 200);
assert.equal(data.data, unconfirmedTransactions[unconfirmedTransactions.length - 1]);
});

it("/transactions/types", async () => {
await apiContext.transactionTypeRepository.save(transactionTypes);

Expand Down
2 changes: 1 addition & 1 deletion packages/api-http/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@mainsail/api-http",
"version": "0.0.1-alpha.18",
"version": "0.0.1-alpha.20",
"description": "HTTP/S API for the Mainsail blockchain",
"license": "GPL-3.0-only",
"contributors": [],
Expand Down
4 changes: 2 additions & 2 deletions packages/api-http/source/controllers/controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ export class Controller extends AbstractController {
}

protected async enrichTransactionResult(
resultPage: Search.ResultsPage<Models.Transaction | Models.MempoolTransaction>,
resultPage: Search.ResultsPage<Models.Transaction>,
context?: { state?: Models.State },
): Promise<Search.ResultsPage<EnrichedTransaction>> {
const state = context?.state ?? (await this.getState());
Expand All @@ -115,7 +115,7 @@ export class Controller extends AbstractController {
}

protected async enrichTransaction(
transaction: Models.Transaction | Models.MempoolTransaction,
transaction: Models.Transaction,
state?: Models.State,
): Promise<EnrichedTransaction> {
return { ...transaction, state: state ? state : await this.getState() };
Expand Down
40 changes: 1 addition & 39 deletions packages/api-http/source/controllers/transactions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,6 @@ export class TransactionsController extends Controller {
@inject(ApiDatabaseIdentifiers.TransactionTypeRepositoryFactory)
private readonly transactionTypeRepositoryFactory!: ApiDatabaseContracts.TransactionTypeRepositoryFactory;

@inject(ApiDatabaseIdentifiers.MempoolTransactionRepositoryFactory)
private readonly mempoolTransactionlRepositoryFactory!: ApiDatabaseContracts.MempoolTransactionRepositoryFactory;

public async index(request: Hapi.Request) {
const criteria: Search.Criteria.TransactionCriteria = request.query;
const pagination = this.getListingPage(request);
Expand Down Expand Up @@ -54,38 +51,6 @@ export class TransactionsController extends Controller {
return this.respondEnrichedTransaction(transaction, request);
}

public async unconfirmed(request: Hapi.Request) {
const pagination = super.getListingPage(request);

const [transactions, totalCount] = await this.mempoolTransactionlRepositoryFactory()
.createQueryBuilder()
.select()
.orderBy("fee", "DESC")
.offset(pagination.offset)
.limit(pagination.limit)
.getManyAndCount();

return super.toPagination(
await this.enrichTransactionResult({
meta: { totalCountIsEstimate: false },
results: transactions,
totalCount,
}),
TransactionResource,
request.query.transform,
);
}

public async showUnconfirmed(request: Hapi.Request) {
const transaction = await this.mempoolTransactionlRepositoryFactory()
.createQueryBuilder()
.select()
.where("id = :id", { id: request.params.id })
.getOne();

return this.respondEnrichedTransaction(transaction, request);
}

public async types(request: Hapi.Request) {
const rows = await this.transactionTypeRepositoryFactory()
.createQueryBuilder()
Expand Down Expand Up @@ -153,10 +118,7 @@ export class TransactionsController extends Controller {
.getMany();
}

private async respondEnrichedTransaction(
transaction: Models.Transaction | Models.MempoolTransaction | null,
request: Hapi.Request,
) {
private async respondEnrichedTransaction(transaction: Models.Transaction | null, request: Hapi.Request) {
if (!transaction) {
return Boom.notFound();
}
Expand Down
4 changes: 2 additions & 2 deletions packages/api-http/source/resources/transaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { injectable } from "@mainsail/container";
import { Contracts } from "@mainsail/contracts";

// https://stackoverflow.com/a/53742518
type T_AND = Models.Transaction & Models.MempoolTransaction;
type T_OR = Models.Transaction | Models.MempoolTransaction;
type T_AND = Models.Transaction;
type T_OR = Models.Transaction;
type AnyTransaction = Partial<T_AND> & Pick<T_OR, keyof T_OR>;

export interface EnrichedTransaction extends AnyTransaction {
Expand Down
Loading

0 comments on commit 4ce7564

Please sign in to comment.