Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inomurko/merge unspent output bugfix to master v2 #1823

Merged
merged 99 commits into from
Mar 12, 2021

Conversation

InoMurko
Copy link
Contributor

@InoMurko InoMurko commented Mar 12, 2021

merges #1769 into master-v2

Omar Kalouti and others added 30 commits August 10, 2020 10:10
* feat: init block.validate

* completes parameter validation tests

* rename validation method with stronger typing

* feat: verify_transactions and and negative test

* add: positive test for verify_transactions

* chore: remove single pipes

* verify_transactions: add @SPEC and @doc

* pending

* test: Added tests for `verify_merkle_root/1`

* remove reverse operation

* refactor: simplify tests

* refactor: simplify verify_merkle_root/1 tests

* refactor: merkle validation tests + entities as module attributes

* add dialyzer spec and remove argument pattern matching

* move logic to dedicated validator module

* test: added test for `block.validate` endpoint

* refactor: make tests pass

* feat: response for `validate_block` view

* feat: error for mismatched_merkle_root

* simplify tests

* rename error

* remove unused method

* fix: error name

* fix: credo

* merge issue: gitmodules

* merge master issue: gitmodules [2]

* merge master issue: gitmodules [3]

* Merge branch 'ripzery/block.validate' of https://github.com/omisego/elixir-omg into ripzery/block.validate

* (re)delete specs

* return submodule

* refactor: decouple verify_merkle_root from transaction recovery

* add: negative test for invalid transactions

* refactor: improve performance of verify_transactions

* use pin operator instead of comparison

* refactor: remove use of & &1. for clearer syntax

* remove redundant comment

* move block validation logic into Watcher

* move parameter validation logic into BlockConstraints

* reflect file changes in controller

* refactor: make verification functions private and shift tests to stateless_validate/1

* fix potential false positive by computing Merkle root correctly.

* add: swagger specs

* refactor: endpoint to return boolean result

* add: nil error

* update documentation to reflect boolean result

* remove error reason in response

Co-authored-by: euro <phuchit@omisego.co>
Co-authored-by: Ayrat Badykov <ayratin555@gmail.com>
* feat: configurable DB pool size, queue target and queue interval

* fix: add release task to release config

* style: mix format

* feat: configure runtime env vars through releases.exs

* fix: remove release tasks

* fix: syntax

* docs: add docs for db pool env vars
* feat: add increase chart version script and job

* feat: filter release tag on CI config

* fix: make increase chart script work

* test: docker image

* feat: add watcher&watcher-info on increase version

* chore: remove commented configs and back to non-playground

* fix: extra space
* feat: transaction counting and block-level duplicate input verification in block validation

* fix: dialyzer error

* fix: credo error

* feat: validate fee transactions in block

* test: fee transaction validation

* revert fee logic meant to be stateful

* remove: fee claimer check

* fix: place dummy fee claimer

* test names

* refactors: simplify duplicate input verification, use guards, etc.

* PR review: description changes

* fix: credo

* simplify duplicate input checking

* update documentation

* fix: dialyzer

* spacing

* suggested edits
* feat: change block formation log from debug to info

* feat: BlockQueue publishes :block_submitting and :block_submitted events

* feat: BlockQueue.Monitor that raises/clears :block_submission_stalled alarm

* refactor: tracks root chain height directly from the bus

* refactor: revert variable naming

* fix: remove remaining EtherereumHeight.get()

* fix: typespec

* feat: add telemetry and statsd metric for blknum_submitting and blknum_submitted

* feat: add telemetry and statsd metric for blocks_submitting and blocks_stalled

* fix: rename :block_submission to :block_submission_gas

* feat: add statsd metric for :block_submission_success

* fix: remove non services

* docs: clearer explanation of block queue metrics

* docs: more explanation on event publishing

* feat: add :block_submission_attempt statsd metric

* fix: dialyzer

* feat: block submission stall config and supervisor setup

* format: formatting and naming alignment

* test: add BlockQueue.Monitor test

* refactor: shorten config name

* test: fix tests

* fix: broken service startup

* feat: configurable block submit stall from env var

* fix: move config namespace

* refactor: brackets everywhere

* fix: config naming

* fix: wrong namespace

* test: fix app name

* test: fix init

* refactor: use :block_submit_stalled everywhere

* fix: ignore unrelated events

* fix: telemetry deprecation

* fix: remove misleading metric :block_queue_num_blocks_submitting due to the way block submission sampling works

* fix: remove dup geth argument

* fix: remove unused block_submit_stall_check_interval_ms

* refactor: add alarm function naming

* refactor: reduce alarm function pattern matching cases

* refactor: move release task to releases.exs

* fix: remove obsolete tests
* add feefeed adapter

* change ip

* add feefeed url

* fix test barebone release

* fix port

* remove override variable from barebone config

* chore: use https instead of gits to avoid permission issue

* test: update to cabbage using fee api

* fix: git submodule without --remote flag

So it would not always pull the head branch from remote.

* fix: update cabbage to fix reorg

* fix: circle ci mis-comment

* chore: add healthcheck and depends on for services

and mock off other tests aside from reorg

* chore: sync with cabbage update

* chore: add space before network

* chore: ignore geth folder

* debug: comment out make docker steps

* chore: update priv/perf for debug docker-compose pull

* debug: use feefeed-dev with more logging

* debug: use newer feefeed docker that fixes a bug

* chore: update cabbage commit

* chore: uncomment the commented CI jobs

* chore: update latest cabbage

* style: docker file space

* fix: all docker images command have dockerhub authenticate

* chore: update cabbage for code review

* fix: circle ci login to dockerhub

and update cabbage commit

* fix: fee for perf tests

- set in the test config to use the new fee amount 75
- for LoadTest.Common, pass in the fee_amount and use the value from config

* chore: back to feefeed:latest image

* style: mix format

* refactor: move docker_login out from make_docker_images

Logic-wise it does not make much sense actually to be together.

* chore: update cabbage to latest

* style: fix lint

* chore: update cabbage commit

* chore: use master from cabbage

* chore: bring back submodule udpate --remote

This is just better. change the branch in submodele file instead for testing.

Co-authored-by: jarindr <jarindr23@gmail.com>
* feat: reintroduce github_changelog_generator

* feat: more changelog tags

* feat: wholly configuring the changelog sections

* feat: changelog label auto checker

* refactor: better review messages

* debug: apply workflow on all branches to check it's working

* fix: bad env format

* fix: wrong job name

* fix: missing closing quote

* fix: bad syntax

* fix: enable shell tracing

* fix: premature failure

* fix: remove extra full stop

* debug: reenable label check only for master

* fix: missing line break escape

* refactor: use Github's default env vars for its url building

* feat: fail the github action instead of relying on a bot

* fix: remove continue-on-error

* fix: combine github action steps so it's easier to find the original error

* feat: echo error

* fix: proper error

* fix: syntax

* fix: force exit on error [ciskip]

* fix: operator precedence
* Revert "fix: fix in-flight exit deleted bug and add tests (#1714)"

This reverts commit f302553.

* Revert "feat: handle in-flight exits deletions (#1701)"

This reverts commit b3081f8.
* refactor: abstract steps in circle ci to make file for perf

* chore: seperate docker-compose file for feefeed

to allow public contributor to run without feefeed docker

* fix: make start-services command with feefeed

* refactor: move mix format for api generated code back to CI

* debug: add debug CI workflow

* style: simplify docker-compose file

* debug: add log service command to perf

* do not set env var in makefile

* back to run whole workflow

* refactor: COMPOSE_FULL_SERVICES in makefile

* chore: spaces instead of tab in .gitmodules
machine

module rename

dont cache

install linux deps

sleep

postgres

child chain url and childchain empty fees
* rem childchain code

* erlexec

* fixtures inclusion

* revert cabbage and api client generation from omg v1 childchain

* we dont need wget anymore
* feat: trigger increase chart version on merge to master

* debug: switch to playground repo

And allow circle ci to run on non-master

* fix: unbound string

* feat: add jitter to the call

* remove jitter, not useful

* chore: cleanup

Uncomment CircleCI jobs, remove deployment jobs/scripts, not using playground repo

* fix: circle ci format

* fix: notifiy service do not wait for non-existing deployment job

* chore: remove childchain master deployment

Responsibility has been moved to omg-childhchain-v1 repo.
Have another PR for that: omgnetwork/omg-childchain-v1#15

* chore: remove childchain release from elixir-omg

Moved to omg-childchain-v1.
* tests: add load test for standard exits

* tests: add watcher status scenario

* tests: standard exit test syncs with watcher

* tests: revert test fee_amount

* tests: add max num retries when waiting

* tests: remove FundAccountRootchain scenario

* tests: change if to case
Two kinds of errors I saw:
1. Tests are timing out during account creation and unlocking on both geth nodes. After I increased timeout for account creation, I haven't seen this error anymore
2. Tests are failing with wrong balances (on the childchain and the rootchain). I added additional checks to the reorg function to make sure nodes have the same latest block after reorg. I think it helped but still, tests are failing sometimes.
* update changelog

* manual fix change log

* more manual fix change log

* Update VERSION

Co-authored-by: Unnawut Leepaisalsuwanna <921194+unnawut@users.noreply.github.com>
* parallelize tests by tags
* use exexec from upstream
* fix: recheck PR label on synchronize and reopen

* test: a pointless commit to check that the enforce-changelog-label job still passes

* debug: try the fixed feefeed

* Revert "debug: try the fixed feefeed"

This reverts commit a35fc90.
* test: Init

* test: create `generate_utxos_map/3`

* test: put test in describe

* test: added `needed_funds/2` tests

* add tests and light refactor for get_sorted_grouped_utxos

* add tests and light refactor [2]

* test: refactor `create_advice/2`

* add spec and clarify funds_sufficient

* refactor: `needed_funds`

* refactor: use shorthanded type

* Add @doc  and readabilty edits

* add: tests for funds_sufficient/1

* refactor: simplify use of 'alice'

* refactor: move test inside describe

* test: add `select_utxo/2` tests

* refactor: remove extra line

* fix: spec

* feat: implement `add_merge_utxos`

* test: add test for `add_merge_utxos/2`

* feat: add prioritize_merge_utxos/2

* test: add test for `prioritize_merge_utxos/2`

* refactor: pipe one more time

* refactor and spec stealth merge

* refactor: test name

* add: tests and doc for `add_utxos_for_stealth_merge`

* feat: integrate add_merge_utxos to create_advice

* test: add test for create_advice

* add: doc content for add_utxos_for_stealth_merge

* refactor and test prioritisation of UTXOs for stealth merge

* refactor: split transaction operation

* Fix dialyzer type

* refactor: dialyzer

* fix: typo

* test: add utxo_selection test

* debug: transaction create

* feat: handle when original inputs are empty

* tests: remove transaction merge tests

* tests: add tests for utxo selection

* tests: handle when too many inputs to satisfy payments and fee

* refactor: remove todo

* feat: move `create_advice` from `utxo_selection.ex` to  `transaction.ex` and rename it to `create_inputs`

* test: add transaction tests

* test: change port `9657` to `9656`

* cleanup: remove unused var

* lint: remove @doc for defp

* test: revert back port `9656` to `9657`

* lint: fix lint

* refactor: remove result from response

* test: add prepare_test_server

* refactor: fix per reviews

* tests: add test case where 2 input use different currencies

* refactor: remove alice, bob from test context

* test: fix mismatch function signature

* fix: dialyzer type

* refactor: Cleanup

* fix: dialyzer

* fix: credo

* remove unusued alias

* refactor: remove comments

* lint: fix

* tests: add tests for transaction.create apis

* test: delete unnecessary function

* refactor: simplified `select_inputs` flow

* refactor: fix follows pr review

* tests: fix wrong function

* lint: add alias

* refactor: remove trailing comma

* refactor: var name

* switch branch for cabbage test

* refactor: move functions out of controller

* test: add outputs to assertion

* test: add tests for `transaction.create/2`

* test: implement tests for include_typed_data/1

* refactor: remove single pipe

* tests: add tests for `select_inputs/2`

* refactor: cleanup typespec

* lint: formatting

* lint: remove unused alias

* lint: reorder the alias

* refactor: move spec and simplified logic

* refactor: simplify pattern matching

* refactor: uniformize param

* revert: bring back merge transaction

* fixes

* refactor: lift out respond

* fix: is_required_merge doesn't work

* refactor: transaction api

* test: fix tests

* tests: fix

* fix: add result key back

* fix: dialyzer part-1

* fix: remove unnecessary dialyzer types

* fix: revert changes on .gitmodules

* refactor: select_inputs/2

* refactor: simplify select_utxo logic

* refactor: re-order functions

* fix: rename function

* fix: conflict

* Fix conflict

* refactor: rename functions

* refactor: remove single pipe

* fix: lint

* fix: tests

* fix: tests 2

* try: update spec repo

* test: change git modules

* test: revert submodule

* test: fix cabbage conflict

* test: add result key back

* fix: private and public function mixing

* test: fix imports and mixing private functions

* fix: break down pipe

* refactor: break down pipe

* fix: remove blank line

* fix: move alias to top

* refactor: renaming and break out pipe

* refactor: get_utxos_count

* refactor: create_transaction

* fix: typo

* refactor: build_inputs

* refactor: formatting

* refactor: lift out input

* refactor: prioritize merge utxos

* remove and ignore priv/apps/childchain_api

Co-authored-by: euro <phuchit@omg.network>
Co-authored-by: euro <phuchit@omisego.co>
Co-authored-by: Mederic <mederic@omise.co>
We are already in 1.0.4 but we forget to port the VERSION file back when updating changelog.
* chore: changelog/version bump v1.0.5

* update CHANGELOG for 1.0.5-pre.0

* bump to include latest changes for infura
achiurizo and others added 23 commits November 26, 2020 18:05
Co-authored-by: Ino Murko <ino.murko@outlook.com>
* #1555 Renamed omisego to omg network

* #1555 Fixed urls

* #1555 downgraded rocksdb to 1.5.1
* chore: changelog/version bump v1.0.5

* update CHANGELOG for 1.0.5-pre.0

* bump to include latest changes for infura

Co-authored-by: Arthur Chiu <24772+achiurizo@users.noreply.github.com>
Co-authored-by: boolafish <boolafish945@gmail.com>
chore: make sure V1.0.5 commit is in the master history
* chore: add sem release

* chore: set release rule for our standard

* chore: test dummy

* fix: sem-release format

* chore: use dry-run on sem release

* fix: back to origin config
* bump elixir
* align rust version to 1.46
* chore: use git tag version instead

* fix: for lint

* style: pipe :)

* refactor: put to private function for version()
* simplify event pulling

* Update core_test.exs

* Update ethereum_event_listener.ex

* Update core.ex
* fix: use git tag cmd to get version

* test: pulish working

* Revert "test: pulish working"

This reverts commit faf0bab.
* feat: add 'ensure_output' to EthEvent.insert_exits to explicitly allow
missing outputs

* test: demonstrate missing output feature

* feat: unplug Std exit consumer of WatcherInfo

* feat: unplug IFE exit started consumer of WatcherInfo

* feat: unplug IFE output piggybacked consumer of WatcherInfo

* feat: unplug IFE output withdrawn consumer of WatcherInfo

* feat: unplug deposits handling out of the Bus

* feat: unplug block application handling out of the Bus

* chore: delete unused modules, linter fixes

* fix: improve TxOutput schema queries and show that by tests

* fix: fix wrongly marked outout existance

* chore: [after review] align to comments

* test: use syncronous test when talking to postgres

* refactor: [after review] Insert full block data synchronously instead of pending block

* chore: delete unused code regarding pending blocks machinery

* test: fix tests - change nonexisting pending block

* test: fix test

* refactor: be explicit about which event expect the output existence

* chore: align to comment

Co-authored-by: Ino Murko <ino.murko.github@protonmail.com>
Co-authored-by: Pawel Nowosielski <Pawel.Nowosielski@imapp.pl>
fix eth_event test

try using `ex_plasma` 0.2.0

try running gcloud without installing

use master branch for specs submodules
@InoMurko InoMurko force-pushed the inomurko/merge-unspent-output-bugfix-to-master-v2 branch from 8d246b4 to e2bd1de Compare March 12, 2021 12:34
@InoMurko InoMurko merged commit 88c8fd0 into master-v2 Mar 12, 2021
@InoMurko InoMurko deleted the inomurko/merge-unspent-output-bugfix-to-master-v2 branch March 12, 2021 15:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.