* First crack at VC puzzles
* Add p2_puzzle_or_hidden_puzzle
* First crack at drivers
* Basic test infra
* compile clsp and test covenant layer
* lint
* Add test for match_covenant_layer
* Add tests for DID TP
* Add tests for DID backdoor
* Add tests for p2_puzzle_or_hidden_puzzle
* Change DID backdoor -> p2_puzzle_w_auth + did_puzzle_authorizer
* Add a VerifiedCredential class
* Make p2_puz_or_hidden_puz viral
* Add morpher solution to covenant layer
* Add capability to update the proofs of a VC
* update_proofs -> do_spend
* Finish lifecycle of VC
* Make backdoor puzzle, remove p2_puzzle_w_auth from stack
* Extract p2_puzzle_w_auth to its own files
* lint
* rework launch process so it works after revocation
* Add some extra tests for the final state after revocation
* Add cost logging
* slight opimizations
* python comments and ergonomic improvements
* Comments for chialisp
* Add VC wallet and store infra
* Add a negative test for updating proofs w/o DID
* First crack at CR CAT
* Turn two hashes into one
* Extract some shatrees out of puzzle hash creation
* Add a stager function
* Precalculate initial_singleton_inner_puzhash_hash
* Add another stager
* Refine stagers
* Add cost logging and assert provider is authorized
* Add sketched out CRCAT class
* black
* Test most of CRCAT drivers
* lint
* Remove an unnecessary param
* Don't commit to singleton ID in parent morpher
* Extract DID to ownership layer
* lint
* use intitial puzzle hash for covenant as proof to morpher
* Collapse hash of parent morhper
* Remove stagers
* Rename some params
* Use SELF_HASH construct
* remove dependency on shatree
* Minor optimization of curried hashes
* Balance tree
* hint -> remark
* Make a v2 ownership layer for cost-sake
* (WIP) Migrate to tp hash at ownership layer
* (WIP) Return tp_hash from tp
* use a stager again
* use constants for ints
* use more constants
* inline a function, get rid of constant
* Switch to tree metadata on ownership layer
* Impelement wallet launch vc
* Minor fixes and rename a bunch of stuff
* lint
* Fix tests
* First crack at proof checking
* Remove unused imports
* Merge tests to get better coverageg
* Fix is_vc methods
* pre-commit
* pre-commit again
* Implement VC spend
* make sql pre-commit check work with git worktrees
* CRCATWallet
* Comment reasoning in script file
Co-authored-by: Kyle Altendorf <sda@fstab.net>
* Add a concept of VCProofs
* Show proofs in vc_get_vc_list as well
* Implememnt CRCAT wallet
* Extend lineage store
* Make tests pass
* WalletIdentifier fix
* Add revocation RPC
* forgotten bytes32
* Return coin name with vc record
* First crack at adding VC authorizations to offers
* Add CROuterPuzzle
* Fix wallet_funcs.py
* VCWallet changes only
* Fix wallet db schema test
* Add RPC client methods and tests
* Allow a path for user to clear VC
* Mint VC command
* Get VCs command
* Forgotten hex compilation
* Automatically fetch DID when we have it
* Update Proofs command
* Add Proof Reveal command
* Get Proofs For Root command
* Revoke VC command
* Chialisp pre-commit cleanup
* Deprecate as_python()
* Add a limit to some sql queries
* Fix some bad imports
* Fix changed wallet sync function
* Check for tail condition amounts in CAT spending
* Add RPC docs
* only need one mojo for a singleton
* Fix comment
* remove create_puzhash from add_new_wallet
* Remove create_tandam_xch_tx
* fix wallet_state_manager hinting
* Rename RPCs
* Use streamable classes for RPC request parsing
* add back accidentally deleted method call
* Remove unnecessary copy() call
* Add negative test for using wrong DID to update proofs/revoke vc
* Add negative test for making sure invalid proofs can't be proven
* Add negative test for trying to piggyback on top an unrelated VC spend
* Make output_amount a uint64
* some chialisp bug fixes
* chialisp readability improvements
* Force same provider on provider update of DID
* typo in EML
* Add vc_wallet folders to package list
* mypy
* Increase test coverage a bit
* Add a bit more coverage
* rework wallet creation
* Delete is_addition_relevant
* Coveralls ignores
* remove brick reference
* coveralls-ignore --> pragma: no cover
* Couple more ignores
* typo corrections
---------
Co-authored-by: ytx1991 <t.yu@chia.net>
Co-authored-by: Kyle Altendorf <sda@fstab.net>
* set -o pipefail
* --only clvm for exploration
* always print coverage reports
* more consistency around use of ='s
* account for https://github.com/nedbat/coveragepy/issues/1604
* Revert "--only clvm for exploration"
This reverts commit 7cbd7f79a6.
* drop work around
* Addition logging for datalayer wrt plugins
* some plugin modifications to config and endpoints
* Add entry point and some minor config checking
* Improved config file reading for store_ids
* Changed to upload_bucket and download_url
* Apply suggestions from code review
Co-authored-by: Kyle Altendorf <sda@fstab.net>
* Code review suggestions
* uploaders and downloaders are now URLs and this was missed earlier
* Update pyinstaller.spec to include plugin binary
* updates based on code review
* Update chia/data_layer/s3_plugin_service.py
Co-authored-by: Almog De Paz <almogdepaz@gmail.com>
* minor updates
* Add boto3 to setup for s3 plugin
* Add None check
---------
Co-authored-by: Kyle Altendorf <sda@fstab.net>
Co-authored-by: Almog De Paz <almogdepaz@gmail.com>
* enable soft-fork2
* add blockchain (consensus) test for time-lock conditions (non-ephemeral spend)
* introduce new soft-fork rule to compare ASSERT_SECONDS_* conditions against the previous transaction block's timestamp (to be consistent with ASSERT_HEIGHT_* conditions)
* bump chia_rs. This updates the mempool rules to disallow relative height- and time conditions on ephemeral coin spends
* implement assert_before in mempool_check_time_locks. Extend ephemeral coin test in blockchain with assert_before conditions
* implement support for assert_before conditions in compute_assert_height()
* support assert-before in mempool
* add timelock rule
* address review comments
* fix bug in make_test_conds() test utility
* bump chia_rs to 0.2.4, which preserves assert_seconds_relative 0 in parsing conditions. This allows for the 1.8.0 soft-fork to make the existing time-lock conditions stricter, > instead of >=. This is to match the existing ASSERT_HEIGHT_RELATIVE, which already is >
* fixup separating ENABLE_ASSERT_BEFORE from MEMPOOL_MODE
* Use a low value for SOFT_FORK2_HEIGHT during tests and cover the case before soft-fork2
---------
Co-authored-by: Adam Kelly <338792+aqk@users.noreply.github.com>
* bump chia_rs to version 0.2.3
* add new error codes for assert_my_birth_*
* add new condition codes for ASSERT_MY_BIRTH_*
* add logic for ASSERT_MY_BIRTH_* conditions
* bump chia_rs to latest version
* add new error codes for ASSERT_BEFORE_* condition failures, ASSERT_CONCURRENT_SPEND failing, ASSERT_CONCURRENT_PUZZLE_FAILED and for impossible constraints
* add new condition opcodes for ASSERT_BEFORE_*, ASSERT_CONCURRENT_SPEND and ASSERT_CONCURRENT_PUZZLE
* fixup Spend and SpendBundleCondition types
* fixup tests that otherwise fail with MINTING_COIN
* fix test that otherwise would fail with RESERVE_FEE_CONDITION_FAILED
* remove use of NO_NEG_DIV flag. It's now implied
* remove duplicate test parameters
Lots of failures in coverage processing.
https://github.com/Chia-Network/chia-blockchain/actions/runs/3825220672/jobs/6508036405#step:16:558
```python-traceback
INTERNALERROR> Traceback (most recent call last):
INTERNALERROR> File "/home/runner/work/chia-blockchain/chia-blockchain/venv/lib/python3.7/site-packages/_pytest/main.py", line 270, in wrap_session
INTERNALERROR> session.exitstatus = doit(config, session) or 0
INTERNALERROR> File "/home/runner/work/chia-blockchain/chia-blockchain/venv/lib/python3.7/site-packages/_pytest/main.py", line 324, in _main
INTERNALERROR> config.hook.pytest_runtestloop(session=session)
INTERNALERROR> File "/home/runner/work/chia-blockchain/chia-blockchain/venv/lib/python3.7/site-packages/pluggy/_hooks.py", line 265, in __call__
INTERNALERROR> return self._hookexec(self.name, self.get_hookimpls(), kwargs, firstresult)
INTERNALERROR> File "/home/runner/work/chia-blockchain/chia-blockchain/venv/lib/python3.7/site-packages/pluggy/_manager.py", line 80, in _hookexec
INTERNALERROR> return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
INTERNALERROR> File "/home/runner/work/chia-blockchain/chia-blockchain/venv/lib/python3.7/site-packages/pluggy/_callers.py", line 55, in _multicall
INTERNALERROR> gen.send(outcome)
INTERNALERROR> File "/home/runner/work/chia-blockchain/chia-blockchain/venv/lib/python3.7/site-packages/pytest_cov/plugin.py", line 297, in pytest_runtestloop
INTERNALERROR> self.cov_controller.finish()
INTERNALERROR> File "/home/runner/work/chia-blockchain/chia-blockchain/venv/lib/python3.7/site-packages/pytest_cov/engine.py", line 44, in ensure_topdir_wrapper
INTERNALERROR> return meth(self, *args, **kwargs)
INTERNALERROR> File "/home/runner/work/chia-blockchain/chia-blockchain/venv/lib/python3.7/site-packages/pytest_cov/engine.py", line 338, in finish
INTERNALERROR> self.cov.stop()
INTERNALERROR> File "/home/runner/work/chia-blockchain/chia-blockchain/venv/lib/python3.7/site-packages/coverage/control.py", line 797, in combine
INTERNALERROR> message=self._message,
INTERNALERROR> File "/home/runner/work/chia-blockchain/chia-blockchain/venv/lib/python3.7/site-packages/coverage/data.py", line 158, in combine_parallel_data
INTERNALERROR> new_data.read()
INTERNALERROR> File "/home/runner/work/chia-blockchain/chia-blockchain/venv/lib/python3.7/site-packages/coverage/sqldata.py", line 815, in read
INTERNALERROR> with self._connect():
INTERNALERROR> File "/home/runner/work/chia-blockchain/chia-blockchain/venv/lib/python3.7/site-packages/coverage/sqldata.py", line 342, in _connect
INTERNALERROR> self._open_db()
INTERNALERROR> File "/home/runner/work/chia-blockchain/chia-blockchain/venv/lib/python3.7/site-packages/coverage/sqldata.py", line 285, in _open_db
INTERNALERROR> self._read_db()
INTERNALERROR> File "/home/runner/work/chia-blockchain/chia-blockchain/venv/lib/python3.7/site-packages/coverage/sqldata.py", line 302, in _read_db
INTERNALERROR> assert row is not None
INTERNALERROR> AssertionError
```