A distributed, proof of stake blockchain designed for the financial services industry.

Provenance


Provenance Blockchain

Provenance is a distributed, proof of stake blockchain designed for the financial services industry.

For more information about Provenance Inc visit https://provenance.io

The Provenance app is the core blockchain application for running a node on the Provenance Network. The node software is based on the open source Tendermint consensus engine combined with the Cosmos SDK and custom modules to support apis for financial services. Figure is the first and primary user of the Provenance Blockchain.

Status

Latest Release Apache 2.0 License Go Report Code Coverage LOC Lint Status

The Public Provenance blockchain is under active development. While the modules in this blockchain are based on implementations from the private Figure Technologies blockchain launched in 2018 there are still breaking API changes expected especially related to the transistion to Cosmos SDK v040 and GRPC.

WARNING: Versions prior to the launch of mainnet and the associated 1.0.0 version should be considered unstable and API changes expected.

Quick Start

The Provenance Blockchain is based on Cosmos, the sdk introduction is a useful starting point.

Developers can use a local checkout and the make targets make run and make localnet-start to run a local development network.

Note: Requires Go 1.15+

Testnet

An alpha version of the Provenance network testnet with limited participation was launch in January 2021.

Mainnet

A public mainnet launch for the public Provenance blockchain is set for the end of Q2 2021.

Owner
Provenance Blockchain, Inc.
Provenance is an open distributed stakeholder blockchain ecosystem built by Figure.com that includes omnibus banks, marketplaces, investor passporting, and more
Provenance Blockchain, Inc.
Comments
  • Error setting mainnet node: BINARY UPDATED BEFORE TRIGGER! UPGRADE

    Error setting mainnet node: BINARY UPDATED BEFORE TRIGGER! UPGRADE

    Summary of Bug

    Trying to set up a mainnet full node using version 1.5.0 through systemd service but run into the following error

    Started Provenance Node Service.
    {"level":"error","time":"2021-07-06T01:23:18Z","message":"BINARY UPDATED BEFORE TRIGGER! UPGRADE \"bluetiful\" - in binary but not executed on chain"}
    panic: BINARY UPDATED BEFORE TRIGGER! UPGRADE "bluetiful" - in binary but not executed on chain
    goroutine 1 [running]:
    github.com/cosmos/cosmos-sdk/x/upgrade.BeginBlocker(0x7ffe783a8ecc, 0x1e, 0xc000165c80, 0x2660340, 0xc000cdd040, 0x26a1d40, 0xc000cd51b0, 0xc000ee3770, 0x2687f40, 0xc000052178, ...)
            github.com/cosmos/[email protected]/x/upgrade/abci.go:84 +0x12a9
    github.com/cosmos/cosmos-sdk/x/upgrade.AppModule.BeginBlock(...)
            github.com/cosmos/[email protected]/x/upgrade/module.go:127
    github.com/cosmos/cosmos-sdk/types/module.(*Manager).BeginBlock(0xc000baf960, 0x2687f40, 0xc000052178, 0x26a1740, 0xc001084d40, 0xb, 0x0, 0xc00046f6b0, 0xd, 0x55e9e, ...)
            github.com/cosmos/[email protected]/types/module/module.go:338 +0x1f8
    github.com/provenance-io/provenance/app.(*App).BeginBlocker(...)
            github.com/provenance-io/provenance/app/app.go:642
    github.com/cosmos/cosmos-sdk/baseapp.(*BaseApp).BeginBlock(0xc0004664e0, 0xc000325440, 0x20, 0x20, 0xb, 0x0, 0xc00046f6b0, 0xd, 0x55e9e, 0x804506d, ...)
            github.com/cosmos/[email protected]/baseapp/abci.go:191 +0x7f8
    github.com/tendermint/tendermint/abci/client.(*localClient).BeginBlockSync(0xc001041560, 0xc000325440, 0x20, 0x20, 0xb, 0x0, 0xc00046f6b0, 0xd, 0x55e9e, 0x804506d, ...)
            github.com/tendermint/[email protected]/abci/client/local_client.go:274 +0xfa
    github.com/tendermint/tendermint/proxy.(*appConnConsensus).BeginBlockSync(0xc00049f7c0, 0xc000325440, 0x20, 0x20, 0xb, 0x0, 0xc00046f6b0, 0xd, 0x55e9e, 0x804506d, ...)
            github.com/tendermint/[email protected]/proxy/app_conn.go:81 +0x75
    github.com/tendermint/tendermint/state.execBlockOnProxyApp(0x2688e40, 0xc0010417a0, 0x2695f80, 0xc00049f7c0, 0xc000ec81e0, 0x26a1940, 0xc00049ed40, 0x1, 0xc001449cc0, 0x20, ...)
            github.com/tendermint/[email protected]/state/execution.go:307 +0x51b
    github.com/tendermint/tendermint/state.(*BlockExecutor).ApplyBlock(0xc00011b3b0, 0xb, 0x0, 0xc00046f2d8, 0x8, 0xc00046f2f0, 0xd, 0x1, 0x55e9d, 0xc001449cc0, ...)
            github.com/tendermint/[email protected]/state/execution.go:140 +0x165
    github.com/tendermint/tendermint/consensus.(*Handshaker).replayBlock(0xc0020341c8, 0xb, 0x0, 0xc00046f2d8, 0x8, 0xc00046f2f0, 0xd, 0x1, 0x55e9d, 0xc001449cc0, ...)
            github.com/tendermint/[email protected]/consensus/replay.go:503 +0x292
    github.com/tendermint/tendermint/consensus.(*Handshaker).ReplayBlocks(0xc0020341c8, 0xb, 0x0, 0xc00046f2d8, 0x8, 0xc00046f2f0, 0xd, 0x1, 0x55e9d, 0xc001449cc0, ...)
            github.com/tendermint/[email protected]/consensus/replay.go:416 +0xdb8
    github.com/tendermint/tendermint/consensus.(*Handshaker).Handshake(0xc0020341c8, 0x26a6220, 0xc0000e6270, 0x1, 0x1)
            github.com/tendermint/[email protected]/consensus/replay.go:268 +0x478
    github.com/tendermint/tendermint/node.doHandshake(0x26a1940, 0xc00049ed40, 0xb, 0x0, 0xc00046f2d8, 0x8, 0xc00046f2f0, 0xd, 0x1, 0x55e9d, ...)
            github.com/tendermint/[email protected]/node/node.go:308 +0x1d8
    github.com/tendermint/tendermint/node.NewNode(0xc000ee8b40, 0x267de00, 0xc0004b7ae0, 0xc00107c3e0, 0x263a340, 0xc00192bda0, 0xc00107c450, 0x2412828, 0xc00107c540, 0x2688e40, ...)
            github.com/tendermint/[email protected]/node/node.go:715 +0x2085
    github.com/cosmos/cosmos-sdk/server.startInProcess(0xc000f6fc60, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x26920e0, 0xc000eaf540, ...)
            github.com/cosmos/[email protected]/server/start.go:244 +0x565
    github.com/cosmos/cosmos-sdk/server.StartCmd.func2(0xc000f3d900, 0xc000f6fdc0, 0x0, 0x2, 0x0, 0x0)
            github.com/cosmos/[email protected]/server/start.go:120 +0x1ec
    github.com/spf13/cobra.(*Command).execute(0xc000f3d900, 0xc000f6fda0, 0x2, 0x2, 0xc000f3d900, 0xc000f6fda0)
            github.com/spf13/[email protected]/command.go:852 +0x47c
    github.com/spf13/cobra.(*Command).ExecuteC(0xc000e83b80, 0x0, 0x0, 0xc000f05650)
            github.com/spf13/[email protected]/command.go:960 +0x375
    github.com/spf13/cobra.(*Command).Execute(...)
            github.com/spf13/[email protected]/command.go:897
    github.com/spf13/cobra.(*Command).ExecuteContext(...)
            github.com/spf13/[email protected]/command.go:890
    github.com/provenance-io/provenance/cmd/provenanced/cmd.Execute(0xc000e83b80, 0x26959e0, 0xc000ec49c0)
            github.com/provenance-io/provenance/cmd/provenanced/cmd/root.go:123 +0x315
    main.main()
            github.com/provenance-io/provenance/cmd/provenanced/main.go:11 +0x2a
    Main process exited, code=exited, status=2/INVALIDARGUMENT
    

    Version

    Provenance: v1.5.0 LevelDB: version 1.23

    Steps to Reproduce

    Set up a systemd service to run the binary file


    For Admin Use

    • [ ] Not duplicate issue
    • [ ] Appropriate labels applied
    • [ ] Appropriate contributors tagged
    • [ ] Contributor assigned/self-assigned
  • Validator: Account not found: key not found rpc error

    Validator: Account not found: key not found rpc error

    Summary of Bug

    I hit an rpc error as key not found as below while creating a validator node on my ubuntu machine.

    $ provenanced tx staking create-validator --moniker secured_provenance --pubkey tpvalconspub1zcjduepq5x4s983f2ueq3tr6mnkzcc3jvp637nnmu4swu4727c6u959qw9vqua29kg  --commission-rate=1.0 --commission-max-rate=1.0 --commission-max-change-rate=1.0 --min-self-delegation=1 --from=secure_key --amount 65000nhash --keyring-dir /home/ubuntu/.config/Provenance/ -t --broadcast-mode block
    Error: rpc error: code = NotFound desc = account tp14qrnd9jplk4ag2e8620396mrag34esvenlaj6s not found: key not found
    

    I have used the pub key derived from the show-validator command as below:

    $ provenanced --testnet tendermint show-validator
    tpvalconspub1zcjduepq5x4s983f2ueq3tr6mnkzcc3jvp637nnmu4swu4727c6u959qw9vqua29kg
    

    The account and key-dir seems to be valid and active:

    $ provenanced --testnet q bank balances tp14qrnd9jplk4ag2e8620396mrag34esvenlaj6s --node=tcp://rpc-0.test.provenance.io:26657
    balances:
    - amount: "2000000000"
      denom: nhash
    pagination:
      next_key: null
      total: "0"
    
    $ provenanced keys list --keyring-backend test -t
    - name: secure_key
      type: local
      address: tp14qrnd9jplk4ag2e8620396mrag34esvenlaj6s
      pubkey: tppub1addwnpepqwgpkqemkvxjwv2nuvz5jehu9z89qcx5vme8356q5klh3lrj3ds2xw4lqg5
      mnemonic: ""
      threshold: 0
      pubkeys: []
    

    Version

    $ provenanced version v1.0.0

    Steps to Reproduce

    git clone -b v1.0.0 https://github.com/provenance-io/provenance
    cd provenance && make install
    export PATH=$PATH:/home/ubuntu/go/bin
    provenanced init secured_provenance --testnet
    curl https://raw.githubusercontent.com/provenance-io/testnet/main/pio-testnet-1/genesis.json > genesis.json
    export PIO_HOME=/home/ubuntu/.config/Provenance
    mkdir -p $PIO_HOME/config
    mv genesis.json $PIO_HOME/config
    Edit $PIO_HOME/config/config.toml with 
        db_backend = "cleveldb" 
    	seeds = "[email protected]:26656,[email protected]"
    	namespace = "provenance"
    go get github.com/provenance-io/cosmovisor/cmd/cosmovisor    
    mkdir -p $PIO_HOME/cosmovisor/install
    cd $PIO_HOME/cosmovisor/install
    git clone https://github.com/provenance-io/cosmovisor.git
    cd cosmovisor
    make
    cp build/cosmovisor /home/ubuntu/go/bin/cosmovisor
    
    export DAEMON_NAME="provenanced"
    export DAEMON_HOME="${PIO_HOME}"
    export DAEMON_ALLOW_DOWNLOAD_BINARIES="true" 
    export DAEMON_RESTART_AFTER_UPGRADE="true"
    
    # Set up keys
    # Whilelist the account 
    
    
    mkdir -p $PIO_HOME/cosmovisor/genesis/bin
    mkdir -p $PIO_HOME/cosmovisor/upgrades
    ln -sf $PIO_HOME/cosmovisor/genesis/bin $PIO_HOME/cosmovisor/genesis/current
    
    cp $(which provenanced) $PIO_HOME/cosmovisor/genesis/bin 
    ln -sf $PIO_HOME/cosmovisor/genesis/bin/provenanced $(which provenanced)
    
    # get the pub key 
    provenanced --testnet tendermint show-validator   
    		
    # Run full node
    cosmovisor start --testnet --home $PIO_HOME --p2p.seeds [email protected]:26656,[email protected]:26656 --x-crisis-skip-assert-invariants
    
    # Run validator
    provenanced  tx staking create-validator --moniker secured_provenance --pubkey tpvalconspub1zcjduepq5x4s983f2ueq3tr6mnkzcc3jvp637nnmu4swu4727c6u959qw9vqua29kg  --commission-rate=1.0 --commission-max-rate=1.0 --commission-max-change-rate=1.0 --min-self-delegation=1 --from=secure_key --amount 65000nhash --keyring-dir /home/ubuntu/.config/Provenance/ -t --broadcast-mode block
    

    For Admin Use

    • [ ] Not duplicate issue
    • [ ] Appropriate labels applied
    • [ ] Appropriate contributors tagged
    • [ ] Contributor assigned/self-assigned
  • WASM Restricted Marker Transfer Question

    WASM Restricted Marker Transfer Question

    Problem Definition

    Currently, it is not possible to perform a restricted marker transfer from a smart contract, even if the contract has transfer permission. This is due to the fact that the marker module requires chain of trust (ie both admin and sender must sign). See here.

    However, the wasm module requires that the contract be the only signer of Msgs encoded through the internal API. See here.

    Leaving this as an open question at the moment. What is the appropriate (secure) way to allow smart contracts to utilize transfer of restricted marker tokens?

    This is important for the ATS exchange contract work being done by @ktalley-figure - used by @jtalis and @leeduan

    Some food for thought:

    • Create a Msg only used by provwasm
    • Some sort of "pre-authorized" transfer permission for smart contracts on accounts holding restricted markers.
    • Both the above?
    • Can we just allow 'admin' as the signer?

    Any other ideas?


    For Admin Use

    • [ ] Not duplicate issue
    • [ ] Appropriate labels applied
    • [ ] Appropriate contributors tagged
    • [ ] Contributor assigned/self-assigned
  • Snapshot Approach does not work

    Snapshot Approach does not work

    @arnabmitra Provenance snapshot approach starts the node from the start of the block on which snapshot was taken - https://tools.highstakes.ch/snapshots/provenancet.

    This does not have blocks from the start like block 1. Can any one help here if we are missing anything. Our requirement is for an archival node.The start block of our node is 6622001.

  • The specified item could not be found in the keyring

    The specified item could not be found in the keyring

    Having this error while doing the transaction The specified item could not be found in the keyring.

    Steps to reproduce the error:

    docker pull provenanceio/provenance
    docker run -p 1317:1317 -p 26657:26657 -p 9090:9090 provenanceio/node:pio-testnet-1  
    

    This is running the network and even getting the status by running the command provenanced status . But while doing the transaction having this error. Screenshot 2022-06-18 at 10 50 04 PM

    But while querying provenanced keys list --keyring-backend test -t, getting the account details. Screenshot 2022-06-18 at 10 50 58 PM

  • Bump github.com/confluentinc/confluent-kafka-go from 1.8.2 to 1.9.0

    Bump github.com/confluentinc/confluent-kafka-go from 1.8.2 to 1.9.0

    Bumps github.com/confluentinc/confluent-kafka-go from 1.8.2 to 1.9.0.

    Release notes

    Sourced from github.com/confluentinc/confluent-kafka-go's releases.

    v1.9.0 is a feature release:

    Fixes

    • Fix Rebalance events behavior for static membership (@​jliunyu, #757, #798).
    • Fix consumer close taking 10 seconds when there's no rebalance needed (@​jliunyu, #757).

    confluent-kafka-go is based on librdkafka v1.9.0, see the librdkafka release notes for a complete list of changes, enhancements, fixes and upgrade considerations.

    Changelog

    Sourced from github.com/confluentinc/confluent-kafka-go's changelog.

    v1.9.0

    This is a feature release:

    Fixes

    • Fix Rebalance events behavior for static membership (@​jliunyu, #757, #798).
    • Fix consumer close taking 10 seconds when there's no rebalance needed (@​jliunyu, #757).

    confluent-kafka-go is based on librdkafka v1.9.0, see the librdkafka release notes for a complete list of changes, enhancements, fixes and upgrade considerations.

    Commits
    • c6c4e03 version 1.9.0 in CHANGELOG, go.mod, README (#803)
    • d38dbd4 min version check updated to 1.9.0 (#802)
    • b89b9e4 Improvements to Go client examples (#801)
    • 9c586e3 fixes #723 (#787)
    • e1fd1c9 KIP-140: ACL operations (#796) (#799)
    • e34bc9a Update the consumer close function with the latest rd_kafka_consumer_close_qu...
    • c1ad021 Merge pull request #798 from confluentinc/import_v1.9.0
    • e50cdaf chore: update repo semaphore project
    • f195ac6 Documentation and error code update for librdkafka v1.9.0
    • a3f1fcd librdkafka static bundle v1.9.0
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Research vesting options.

    Research vesting options.

    Summary

    We will soon have a need for folks to start vesting in hash. As such, we need to research what's available in order to make a plan on how that will be done.

    This issue will house notes and opinions on how best to handle hash vesting and can be closed once a course of action has been decided.


    For Admin Use

    • [ ] Not duplicate issue
    • [ ] Appropriate labels applied
    • [ ] Appropriate contributors tagged
    • [ ] Contributor assigned/self-assigned
  • Decentralized discovery for object store instances

    Decentralized discovery for object store instances

    Summary

    A decentralized discovery method for object stores to connect to each other using the blockchain

    Problem Definition

    Existing P8e object stores use a centralized system for connection and discovery. With the transition to a decentralized public network this central relay point will no longer exist. A method for an address to publish a list of endpoint(s) where partner object stores can authoritatively discover and connect is required.

    Proposal

    Create a record on the blockchain that is controlled by an address and allows it to publish records indicating endpoints available for partners to connect to.

    1. Add a new structure and store on chain under the owner address
    2. Add appropriate read/write methods that allow the owner address to maintain a given entry
    3. Provide a method that returns a list of records for a scope by linking against the "data_access" list of addresses that control which accounts the off-chain information should be provisioned for.

    Implementation

    The following simple structure will be used to hold a reference for a locator endpoint for a given account. The identified account will be the one that owns/controls the record and must sign requests to modify it.

    message ObjectStoreEndpoint {
      // account address the endpoint is owned by
      string owner = 1;
      // locator endpoint uri
      string locator_uri = 2;
    }
    
    • [x] Create a new proto message for ObjectStoreEndpoint
    • [x] Implement ValidateBasic for ObjectStoreEndpoint
    • [x] Add NewObjectStoreEndpoint functions for creating an instance of ObjectStoreEndpoint
    • [x] Create test suite to cover basic validation logic
    • [x] Implement appropriate Stringer interface method, add test case
    • [x] Create associated keeper file for ObjectStoreEndpoint.
      • [x] Create a byte code in the keys.go file for the new type, add methods to create a kvstore key against the address of the user appended to this new type type byte.
      • [x] Get/Set/Remove methods for object in state store (include events and instrumentation publishing).
      • [x] Special query method that returns all of the registered endpoints for a scope / data_access list
    • [x] Wire up msg_server and query_server endpoints to new keeper methods.

    For Admin Use

    • [x] Not duplicate issue
    • [x] Appropriate labels applied
    • [x] Appropriate contributors tagged
    • [x] Contributor assigned/self-assigned
  • Provenance blockchain release v1.13.0 testing

    Provenance blockchain release v1.13.0 testing

    Summary

    Provenance blockchain release v1.13.0 needs to be tested locally, and on testnet before being pushed to mainnet.

    Testing / Verification Areas

    Please assign yourself to an issue and update the test column with the appropriate symbol after testing. Tests are not limited to 1 person, and it's encouraged to test the work of others 😃.

    | Icon | Meaning | Code | | --- | --- | --- | | :white_large_square: | Not tested | :white_large_square | | :white_check_mark: | Tested and passed | :white_check_mark | | :x: | Tested and failed | :x |

    v1.13.0-rc5

    | Issue | Tester(s) | Local Test | Testnet Test | Notes | | --- | --- | --- | --- | --- | | check upgrade handler ochre-rc2 works | @SpicyLemon (localnet only) | :white_check_mark: | :white_check_mark: | Tested using a local-only node/chain and also by forcing it on a testnet quicksync node. Upgrade ran in testnet just fine too. | | Holding query (in x/marker)| @llama-del-rey, @SpicyLemon | :white_check_mark: | :white_check_mark: | make run-config, start the app, and provenanced q marker holding nash. Ran this on testnet: provenanced q marker holding cfigurepayomni --count-total and got back the first 100 of 1234 results. | | Reward module| @Taztingo | :white_check_mark: | :white_large_square: | Tested sunny and rainy day paths for the module. Single programs, multiple programs, share accumulation, share claiming, rollover, expiration and refunding. | | msgfees| @nullpointer0x00 | :white_large_square: | :white_large_square: | | | IBC| @Taztingo | :white_large_square: | :white_large_square: | | | Custom denom | @arnabmitra |:white_check_mark: | :white_large_square: | did run config and with generated custom denom configs ran $HOME/provenance/build/provenanced -t --home $HOME//provenance/build/run/provenanced start --custom-denom vspn chain started up, floor gas price is correct in msgfee params | | | IAVL store upgrading | @SpicyLemon | :white_check_mark: | :white_check_mark: | Upgrading the iavl store is optional, but not forced. |

  • Create a smart contract to convert between two different currencies

    Create a smart contract to convert between two different currencies

    Summary

    Create a smart contract that can easily be deployed and allow users to convert from one currency to another.

    Problem Definition

    We do not have a way to easily convert from nhash to other currencies.

    Proposal

    Create a smart contract that acts as an exchange between two currencies

    • The initialization should take two currencies and their exchange rate
    • Implement a method to do the actual exchange.
    • Implement a method to update the exchange rate.
    • Implement a method to change the contract owner.
    • Ensure the correct currencies are used.

    For Admin Use

    • [ ] Not duplicate issue
    • [ ] Appropriate labels applied
    • [ ] Appropriate contributors tagged
    • [ ] Contributor assigned/self-assigned
  • Fix Message Fees with v0.46 changes.

    Fix Message Fees with v0.46 changes.

    Description

    closes: #1006 closes: #1091

    This straightens out the message fees stuff that was broken when bumping to cosmos v0.46.

    There is one outward-facing change:

    • Changed the TxGasLimitDecorator bypass.
      • Old: If one of the Msgs in a Tx was a gov Msg, bypass max check.
      • New: All Msgs in a Tx need to be gov to bypass max check.

    And several logic and organizational changes:

    • Re-enabled all previously disabled unit tests and simulations.
    • Created a MinGasPricesDecorator to replace the MempoolFeeDecorator that was removed from the SDK.
      • It checks that the fee is greater than the validator's min gas fee.
    • Refactored the MsgFeesDecorator.
      • It now only makes sure the provided fee has enough to cover both the base fee plus any message based fees.
      • It no longer checks the payer's account.
      • It no longer deducts or consumes the base fee.
      • Moved CalculateAdditionalFeesToBePaid into to the x/msgfees module.
    • Refactored the ProvenanceDeductFeeDecorator.
      • Makes sure the payer has enough to cover the additional (msg-based) fees.
      • Deducts and consumes the base fee (and uses it on the feegrant if applicable).
      • Added an sdk.AttributeKeyFeePayer attribute to the events.
    • Added the sdk.AttributeKeyFeePayer to the event with AttributeKeyAdditionalFee (created in the msg fee invoker).
    • Updated the message service router:
      • Extracted Provenance-specific code into its own function.
      • Brought the rest of RegisterService in-line with the SDK's version, with the addition of a call to that new function.

    Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why.

    • [ ] Targeted PR against correct branch (see CONTRIBUTING.md)
    • [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
    • [ ] Wrote unit and integration tests
    • [ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
    • [ ] Added relevant godoc comments.
    • [ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
    • [ ] Re-reviewed Files changed in the Github PR explorer
    • [ ] Review Codecov Report in the comment section below once CI passes
  • Llama 1283 create root name

    Llama 1283 create root name

    Description

    Not fully sure how to go about making it compatible with the legacy proposal handlers. Opening a draft to get some feedback

    closes: #XXXX


    Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why.

    • [ ] Targeted PR against correct branch (see CONTRIBUTING.md)
    • [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
    • [ ] Wrote unit and integration tests
    • [ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
    • [ ] Added relevant godoc comments.
    • [ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
    • [ ] Re-reviewed Files changed in the Github PR explorer
    • [ ] Review Codecov Report in the comment section below once CI passes
  • 1268 add bips field to msg assess custom msg fee request (EARLY DRAFT)

    1268 add bips field to msg assess custom msg fee request (EARLY DRAFT)

    Description

    closes: #1268


    Before we can merge this PR, please make sure that all the following items have been checked off. If any of the checklist items are not applicable, please leave them but write a little note why.

    • [ ] Targeted PR against correct branch (see CONTRIBUTING.md)
    • [ ] Linked to Github issue with discussion and accepted design OR link to spec that describes this work.
    • [ ] Wrote unit and integration tests
    • [ ] Updated relevant documentation (docs/) or specification (x/<module>/spec/)
    • [ ] Added relevant godoc comments.
    • [ ] Added a relevant changelog entry to the Unreleased section in CHANGELOG.md
    • [ ] Re-reviewed Files changed in the Github PR explorer
    • [ ] Review Codecov Report in the comment section below once CI passes
  • Bump golang.org/x/text from 0.5.0 to 0.6.0

    Bump golang.org/x/text from 0.5.0 to 0.6.0

    Bumps golang.org/x/text from 0.5.0 to 0.6.0.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Create tool for comparing underlying database contents as basis for identifying app hash mismatches

    Create tool for comparing underlying database contents as basis for identifying app hash mismatches

    Summary

    When nodes encounter application hash mismatches, it is not easy to determine which data differs in order to trace the issue. A tool that offers a low-level key/value comparison of two database files (e.g. application.db) would allow the differences to be determined using only the raw database files. This would only be relevant for node data at relatively the same height, but it should work nicely in cases where there is a known issue and good/bad versions of the data at relatively similar heights.

    Problem Definition

    We currently do not have a method of determining the reason for an app hash mismatch since the database data is opaque unless it's being loaded from within the context of the cosmos application.

    Proposal

    Build a simple key/value comparison tool that notes differences between the low-level databases so they can be traced to find the cause of an app hash mismatch. The initial version will be targeted to leveldb backends (goleveldb and cleveldb), but the tm-db library will be used so that other backends may be supported as well.


    For Admin Use

    • [x] Not duplicate issue
    • [x] Appropriate labels applied
    • [x] Appropriate contributors tagged
    • [x] Contributor assigned/self-assigned
  • Enable ability for smart contracts to be owners of metadata entries.

    Enable ability for smart contracts to be owners of metadata entries.

    Summary

    Allow metadata scopes, sessions, and/or records to have owners that are smart contracts.

    Problem Definition

    As a smart-contract creator, I want to be able to have my smart-contract own metadata entries so I can more easily manage updating information.

    Proposal

    1. In the x/metadata wasm encoders, add the smart contract address as the first signer of the message being sent.
    2. In the x/metadata msg validation, make sure that the first signer is one of the required signers.
    3. In our wasmd fork, update handleSdkMessage to only check the first address from GetSigners().

    For Admin Use

    • [ ] Not duplicate issue
    • [ ] Appropriate labels applied
    • [ ] Appropriate contributors tagged
    • [ ] Contributor assigned/self-assigned
Tarmac is a unique framework designed for the next generation of distributed systems
Tarmac is a unique framework designed for the next generation of distributed systems

Framework for building distributed services with Web Assembly

Dec 31, 2022
A Distributed Content Licensing Framework (DCLF) using Hyperledger Fabric permissioned blockchain.

A Distributed Content Licensing Framework (DCLF) using Hyperledger Fabric permissioned blockchain.

Nov 4, 2022
Skynet is a framework for distributed services in Go.
Skynet is a framework for distributed services in Go.

##Introduction Skynet is a communication protocol for building massively distributed apps in Go. It is not constrained to Go, so it will lend itself n

Nov 18, 2022
This library contains utilities that are useful for building distributed services.

Grafana Dskit This library contains utilities that are useful for building distributed services. Current state This library is still in development. D

Jan 2, 2023
Distributed lock manager. Warning: very hard to use it properly. Not because it's broken, but because distributed systems are hard. If in doubt, do not use this.

What Dlock is a distributed lock manager [1]. It is designed after flock utility but for multiple machines. When client disconnects, all his locks are

Dec 24, 2019
Distributed reliable key-value store for the most critical data of a distributed system

etcd Note: The main branch may be in an unstable or even broken state during development. For stable versions, see releases. etcd is a distributed rel

Dec 30, 2022
Dec 27, 2022
A Go library for master-less peer-to-peer autodiscovery and RPC between HTTP services

sleuth sleuth is a Go library that provides master-less peer-to-peer autodiscovery and RPC between HTTP services that reside on the same network. It w

Dec 28, 2022
An experimental library for building clustered services in Go

Donut is a library for building clustered applications in Go. Example package main import ( "context" "log" "os" // Wait for etcd client v3.4, t

Nov 17, 2022
distributed data sync with operational transformation/transforms

DOT The DOT project is a blend of operational transformation, CmRDT, persistent/immutable datastructures and reactive stream processing. This is an im

Dec 16, 2022
High performance, distributed and low latency publish-subscribe platform.
High performance, distributed and low latency publish-subscribe platform.

Emitter: Distributed Publish-Subscribe Platform Emitter is a distributed, scalable and fault-tolerant publish-subscribe platform built with MQTT proto

Jan 2, 2023
Fast, efficient, and scalable distributed map/reduce system, DAG execution, in memory or on disk, written in pure Go, runs standalone or distributedly.

Gleam Gleam is a high performance and efficient distributed execution system, and also simple, generic, flexible and easy to customize. Gleam is built

Jan 1, 2023
Go Micro is a framework for distributed systems development

Go Micro Go Micro is a framework for distributed systems development. Overview Go Micro provides the core requirements for distributed systems develop

Jan 8, 2023
Simplified distributed locking implementation using Redis

redislock Simplified distributed locking implementation using Redis. For more information, please see examples. Examples import ( "fmt" "time"

Dec 24, 2022
A distributed lock service in Go using etcd

locker A distributed lock service client for etcd. What? Why? A distributed lock service is somewhat self-explanatory. Locking (mutexes) as a service

Sep 27, 2022
Go Open Source, Distributed, Simple and efficient Search Engine

Go Open Source, Distributed, Simple and efficient full text search engine.

Dec 31, 2022
Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge.
Dapr is a portable, event-driven, runtime for building distributed applications across cloud and edge.

Dapr is a portable, serverless, event-driven runtime that makes it easy for developers to build resilient, stateless and stateful microservices that run on the cloud and edge and embraces the diversity of languages and developer frameworks.

Jan 5, 2023
Lockgate is a cross-platform locking library for Go with distributed locks using Kubernetes or lockgate HTTP lock server as well as the OS file locks support.

Lockgate Lockgate is a locking library for Go. Classical interface: 2 types of locks: shared and exclusive; 2 modes of locking: blocking and non-block

Dec 16, 2022