An interoperable smart contract hub

Juno

photo_2021-03-03_18-10-06

An interoperable smart contract hub which automatically executes, controls or documents a procedure of relevant events and actions according to the terms of such contract or agreement to be valid & usable across multiple sovereign networks.

Juno as a sovereign public blockchain in the Cosmos ecosystem, aims to provide a sandbox environment for the deployment of such interoperable smart contracts. The network serves as a decentralized, permissionless & censorship resistant avenue for developers to efficiently and securely launch application specific smart contracts using proven frameworks and compile them in various languages Rust & Go with the potential future addition of C and C++ Battle tested modules such as CosmWasm, will allow for decentralized applications (dapps) to be compiled on robust and secure multi-chain smart contracts. EVM support and additional specialized modules to be enabled after genesis subject to onchain governance.

At the heart of Cosmos is the Inter Blockchain Communication Protocol (IBC), which sets the table for an interoperable base layer 0 to now be used to transfer data packets across thousands of independent networks supporting IBC. Naturally, the next evolutionary milestone is to enable cross-network smart contracts.

The Juno blockchain is built using the Cosmos SDK framework. A generalized framework that simplifies the process of building secure blockchain applications on top of Tendermint BFT. It is based on two major principles: Modularity & capabilities-based security.

Agreement on the network is reached via Tendermint BFT consensus.

Tendermint BFT is a solution that packages the networking and consensus layers of a blockchain into a generic engine, allowing developers to focus on application development as opposed to the complex underlying protocol. As a result, Tendermint saves hundreds of hours of development time.

Juno originates from a community driven initiative, prompted by developers, validators &delegators. A common vision is to preserve the neutrality, performance & reliability of the Cosmos Hub and offload smart contract deployment to a dedicated sister Hub. Juno plans to make an early connection to the Cosmos Hub enabling IBC transfers, cross-chain smart contracts and making use of shared security.

An independent set of validators secures the Juno main-net via delegated proof of stake. $Juno, the native asset has many functions like securing the Juno Hub & serving as a work token to give access to on-chain governance voting rights and to provide utility in the deployment and execution of smart contracts.

What differentiates JUNO from other Smart Contract networks?

🟣 Interoperable smart contracts

🟣 Modularity

🟣 Wasm + (EVM)

🟣 Compilation in multiple languages Rust & Go (C,C++)

🟣 High scalability

🟣 Ease of use

🟣 Fee balancing (Upper & lower bound)

🟣 Free & fair asset distribution 100% to staked atom only

🟣 Balanced governance (Zero top heavy control)

🟣 Value sharing model linked to smart contract usage

🟣 Permissionless

🟣 Decentralized

🟣 Censorship resistant

photo_2021-03-03_18-22-29

Distribution

A 1:1 stakedrop is distributed to $ATOM holders, giving 100% of the $JUNO supply to staked $ATOM balances that had their assets bonded at the time of the Stargate snapshot on Feb. 18th 6:00 PM UTC. Addresses that qualify will be included in the JUNO genesis block at launch. Exchange validator balances that failed to vote on prop #37 will be excluded. Additionally unbonded ATOM at the time of the snapshot will be excluded. A whale cap was voted in by the community, effectively hard-capping $ATOM accounts at 50 thousand $ATOM in order to ensure a less top heavy distribution. 10% of the supply difference to be allocated to a multisig committee address for the initial funding of a core-development team. The remaining 90% of the excess supply to be allocated to the community pool. (Multi-sig committee to be selected by the community before genesis!)

Asset & network metrics

The community has proposed the following parameters for the network and native asset (subject to change before genesis based on community polling):

🟣 Ticker: JUNO

🟣 Supply: Snapshot of Cosmoshub-3 at 06:00 PM UTC on Feb 18th 2021

🟣 Inflation: Dynamic 15-40%

🟣 Community pool tax: 5% of block rewards

JUNO (LOGO 3)

Proposed JUNO inflation reward shedule

βœ… Initial Supply at genesis 268,335,648 $Juno (Stargate Snapshot)

Initial fixed inflation 40% (+ 107.334.259,2)

🟣 After year 1: 375669907.2 JUNO

Inflation reduction to 20% (+75.133.981,44)

🟣 After year 2: 450803888.64 JUNO

Inflation reduction to 10% (+45.080.388,864)

🟣 After year 3: 495884277.504 JUNO

Once the inflation reaches 10% it reduces on a fixed 1% basis each year.

🟣 Year 4 = 9% (+44.629.584,975) Supply = 540513862.479 JUNO

🟣 Year 5 = 8% (+43.241.108,99832) Supply = 583754971.47732 JUNO

🟣 Year 6 = 7% (+40.862.848,00341) Supply = 624617819.48073 JUNO

🟣 Year 7 = 6% (+37.477.069,16884) Supply = 662094888.64957 JUNO

🟣 Year 8 = 5% (+33.104.744,43248) Supply = 695199633.08205 JUNO

🟣 Year 9 = 4% (+27.807.985,32328) Supply = 723007618.40533 JUNO

🟣 Year 10 = 3% (+21.690.228,55216) Supply = 744697846.95749 JUNO

🟣 Year 11 = 2% (+14.893.956,93915) Supply = 759591803.89664 JUNO

🟣 Year 12 = 1% (+7.595.918,03897) Supply = 767187721.93561 JUNO MAX SUPPLY

After year 12 the inflation reward shedule ends. Network incentives would primarily come from smart contract usage & regular tx fees generated on the network.

Juno is a blockchain built using Cosmos SDK and Tendermint and created with Starport.

Get started

starport serve

serve command installs dependencies, builds, initializes and starts your blockchain in development.

Configure

Your blockchain in development can be configured with config.yml. To learn more see the reference.

Launch

To launch your blockchain live on mutliple nodes use starport network commands. Learn more about Starport Network.

Learn more

Owner
Juno
🟣 Interoperable Smart Contract Network 🟣 Highly scalable, robust, secure & easy to deploy 🟣 Cosmos SDK / Tendermint / Cosm Wasm 🟣
Juno
Comments
  • βœ…  remove ignite/starport

    βœ… remove ignite/starport

    The ignite cli has a terrible track record of keeping dependencies like cosmoscmd up to date.

    For security reasons, we should remove any depencency that lives in its repository.

    For maintainability reasons, same thing.

    New plan is to migrate over the cli tests too. I think it's possible that they'll help me to identify the issue.

    • removes ignite cli
    • bumps to v10
    • needed to continue work on:
      • #230
      • #232
      • #235
      • #234
  • Integrate ICA changes

    Integrate ICA changes

    This one is going to need a bunch of testing.

    At first blush, no regressions, though there's some caveats with auth impl, and I guess we won't know if it really works until we test it, huh?

  • Update mint module

    Update mint module

    • Halving time now is based on the total supply instead of fixed blocks per year param.
    • Better round block provisions during phase changes

    -- Need to update tests

  • wasmd 30 + ibc v4 + IBCFees

    wasmd 30 + ibc v4 + IBCFees

    Pending ibc-go ICS23 v0.9.0 bump 2868 PR

    wasmd 0.30.0 ibc go v4.2.0

    New IBCFeeKeeper by following official guide

    • https://ibc.cosmos.network/main/middleware/ics29-fee/integration.html

    ibcRouter updated wasmStack with ibc fee keeper middleware. Same for transfer & icaHost

    Added ibc v3->4 upgrade comment from official guide

    • https://github.com/cosmos/ibc-go/blob/v5.1.0/docs/migrations/v3-to-v4.md#migration-to-fix-support-for-base-denoms-with-slashes
  • Set upload fees for contracts higher

    Set upload fees for contracts higher

    It should cost more to upload a contract. I believe there is already a parameter for this? Let's update it on the Uni testnet.

    If there is not a parameter, we should add this feature. Transactions should be cheap, but uploading a contract should be expensive.

  • Juno v10

    Juno v10

    @the-frey, @JakeHartnell and I have talked a great deal about making faster, incremental releases.

    So here's juno but more special:

    • tendermint v0.34.21
    • ibc-go v4.0.0
    • cosmos-sdk v0.45.7
    • iavl v0.19.1

    All of these put together make for a leaner, meaner juno.

    Deploy plan

    This is a state breaking change because of ibc-go v4.0.0 It should be tested on Uni first.

    Deploy timeline

    We should play around and see how quickly (or not) we can get this out. The changes are in total quite minor, though they should make juno a good deal faster because we'll be using the Osmosis turbocharged iavl.

    Addendum

    This currently uses a notional-labs fork of wasmd. I think that this work is now good to go for Uni, but we should wait for this PR:

    • https://github.com/CosmWasm/wasmd/pull/940

    To be merged upstream before we take this live on mainnet.

    There have been requests from the community to make our block times lower. When this PR is merged, various validators can/should begin lowering their commit timeout, and we can have faster juno, too. This is comfortable because of the turbocharged osmosis iavl (now just plain old iavl v0.19.1)

  • Make every PR not fail

    Make every PR not fail

    Updates the docker build process so that:

    • we always build the docker image
    • we do not push the docker image, except when ${{ github.ref == 'refs/heads/master' }}
  • E2E

    E2E

    What is the purpose of the change

    Add End to end tests for Juno. The e2e package defines an integration testing suite used for full end-to-end testing functionality. It initializes the chains for testing via Docker.

    Features included in this PR

    1. Basic logic
    • This is the most basic type of setup where a single chain is created
    • It simply spins up the desired number of validators on a chain.
    1. Test IBC Token Transfer
    • Ibc transfer test
    • Using Hermes Relayer
    1. Test Token Factory Bindings
    • TokenFactory module and its bindings work as expected
    1. Upgrade testing
    • CLI commands are run to create an upgrade proposal and approve it
    • Old version containers are stopped and the upgrade binary is added
    • Current branch Juno version is spun up to continue with testing

    Features will do in future

    • State Sync Testing
    • TestTWAP
    • Test Global Fee
  • Revert

    Revert "Remove custom /txs endpoint"

    I don't think it's what crashed the chain but Keplr is no longer working for sends on my local machine and think this is the culprit. Maybe?

    Reverts CosmosContracts/juno#147

  • Moneta Mainnet Release Checklist

    Moneta Mainnet Release Checklist

    ~In order to call the Moneta upgrade complete, we need to do the following:~

    ~- Gov prop to set block max gas #82~ ~- Moneta alpha upgrade #71 #72~ ~- Moneta beta upgrade #17 #85~

    ~Once moneta is up, we will want to pin some contracts, to reduce their cost. This is via governance. ~

    ~- Contract pinning gov prop~

    ~Some example contracts that might be pinned:~

    ~- DAODAO~ ~- JunoMint~ ~- Junoswap~ ~- whoami~ ~etc...~

    ~This will be followed by a final release:~

    ~- Replace wasmd fork with wasmd 0.21 when SDK 44 <-> wasmd is complete and audited~


    New working plan:

    • [x] Gov prop to set block max gas #82
    • [x] Test a single moneta upgrade that includes #71 #72 #17 #85 #90 and #95 on a testnet
    • [x] Gov prop for moneta upgrade on mainnet
    • [x] Do the single moneta upgrade on mainnet

    Once moneta is up, we will want to pin some contracts. This is done via governance.

    • [ ] Contract pinning gov prop

    Some example contracts that might be pinned:

    • DAODAO
    • JunoMint
    • Junoswap
    • whoami
    • CW20
    • CW721 etc...

    This will be followed by a final release:

    • [x] Replace wasmd fork with wasmd 0.21 when SDK 44 <-> wasmd is complete and audited
  • Generated genesis file doesn't work.

    Generated genesis file doesn't work.

    Recent version here: https://github.com/CosmosContracts/testnets/blob/main/juno-testnet-7/genesis.json

    When it's run it throws an error:

    panic: invariant broken: bank: total supply invariant
            sum of accounts coins: 72819737204316ujuno
            supply.Total:          52819737204316ujuno
    
  • x/oracle: driven-table test

    x/oracle: driven-table test

    Background

    We need to re-write some of the tests for history price in the oracle module to make them table driven.

    Suggested Design

    • Review each test within history_test.go
    • If test would benefit from being changed to table-driven, change that test

    Acceptance Criteria

    • All existing and new tests should pass
  • Oracle tests: multiple denom, denom with no entries; endBlocker tests

    Oracle tests: multiple denom, denom with no entries; endBlocker tests

    1. Adds price history test for when we have multiple denominations (one denom is prefix of another also covered), to make sure that multiple denom entries does not interfere with each other.
    2. Adds price history test for when price is queried for denom which hasn't been stored yet.
    3. Adds abci tests for EndBlocker to see if price is correctly stored after validator vote period is over.

    To discuss:

    1. getHistoryEntryBetweenTime() returns []types.PriceHistoryEntry(nil) instead of []types.PriceHistoryEntry{} when the denom does not have stored prices. Is it expected or should be changed?
    2. GetArithmetricTWAP() throws errror no values in range when there is no price entry for given denom before startTime becuase the first and last price entry is fetched using getHistoryEntryAtOrBeforeTime() and it throws error for startTime. IMO this should be handled in GetArithmetricTWAP() and values must be returned even if there is no price entry before startTime.
    3. I've left TODO in comments for both of the above.
  • Use stargate query for token factory.

    Use stargate query for token factory.

    Background

    • Wasmd v0.30.0 has stargate query, so we do not need wasmbinding for query chain state from smart contract.
    • Notional team are building a rust library for stargate here : https://github.com/notional-labs/juno-rust.

    Suggested Design

    • Migrate tokenfactory custom query to stargate query
    • Write new contract for tokenfactory testing

    Acceptance Criteria

    • Have new contract for e2e test
    • All test passed
Troon-NFT-Contract is deployed on Flow Blockchain, which is a white-label smart-contract for NFTs with an addition layer of Brand, Schema and Template

Overview Summary of NFTContract NFTContract is a Non Fungible Token (NFT) standard for Flow blockchain. It offers a powerful set while keeping unneces

Jan 4, 2022
A smart Hub for holding server stat
A smart Hub for holding server stat

Stat Hub A smart Hub for holding server stat δΈ­ζ–‡θ―΄ζ˜Ž | English README Overview Stat Hub is a service for collecting and displaying servers stat. Stat Hub

Aug 29, 2020
A smart contract development toolchain for Go

ethgen - A smart contract development toolchain for Go A simple yet powerful toolchain for Go based smart contract development Compile solidity contra

Sep 14, 2022
A Gomora template for building dApps and web3-powered API and smart contract listeners

Gomora dApp A Gomora template for building dApps and web3-powered API and smart contract listeners Local Development Setup the .env file first cp .env

Feb 15, 2022
A guide to smart contract security best practices

Smart Contract Security Best Practices Visit the documentation site: https://consensys.github.io/smart-contract-best-practices/ Read the docs in Chine

Dec 27, 2022
OpenZeppelin Contracts is a library for secure smart contract development.

A library for secure smart contract development. Build on a solid foundation of community-vetted code. Implementations of standards like ERC20 and ERC

Jan 5, 2023
An open source smart contract platform

EOSIO - The Most Powerful Infrastructure for Decentralized Applications Welcome to the EOSIO source code repository! This software enables businesses

Jan 7, 2023
Evmos is a scalable, high-throughput Proof-of-Stake blockchain that is fully compatible and interoperable with Ethereum.

Evmos Evmos is a scalable, high-throughput Proof-of-Stake blockchain that is fully compatible and interoperable with Ethereum. It's built using the Co

Dec 31, 2022
Ethermint is a scalable and interoperable Ethereum library, built on Proof-of-Stake with fast-finality using the Cosmos SDK.
Ethermint is a scalable and interoperable Ethereum library, built on Proof-of-Stake with fast-finality using the Cosmos SDK.

Ethermint Ethermint is a scalable and interoperable Ethereum library, built on Proof-of-Stake with fast-finality using the Cosmos SDK which runs on to

Jan 3, 2023
OmniFlix Hub is a blockchain built using Cosmos SDK and Tendermint and created with Starport.

OmniFlix Hub is the root chain of the OmniFlix Network. Sovereign chains and DAOs connect to the OmniFlix Hub to manage their web2 & web3 media operations (mint, manage, distribute & monetize) as well as community interactions.

Nov 10, 2022
Return list of the contract's events logs

Return list of the contract's events logs Return contract's events logs via sending address, from_block and to_block range only as RAW data. Working w

Oct 12, 2021
Abigen by contract address using etherscan api

Abigen for zoomers Just a simple wrapper to fetch abis from etherscan and run abigen on it. Uses the name of a contract if possible. Usage First put y

Mar 24, 2022
DERO: Secure, Anonymous Blockchain with Smart Contracts. Subscribe to Dero announcements by sending mail to [email protected] with subject: subscribe announcements
DERO: Secure, Anonymous Blockchain with Smart Contracts.  Subscribe to Dero announcements by sending mail to lists@dero.io with subject: subscribe announcements

Welcome to the Dero Project DERO News Forum Wiki Explorer Source Twitter Discord Github Stats WebWallet Medium Table of Contents ABOUT DERO PROJECT DE

Dec 7, 2022
The bare metal Go smart card
The bare metal Go smart card

Authors Andrea Barisani [email protected] | [email protected] Introduction The GoKey application implements a USB smartcard in pure Go

Dec 8, 2022
Yet another Binance Smart Chain client based on TrustFi Network

TrustFi Smart Chain The goal of TrustFi Smart Chain is to bring programmability and interoperability to Binance Chain. In order to embrace the existin

Mar 27, 2021
The Fabric Smart Client is a new Fabric Client that lets you focus on the business processes and simplifies the development of Fabric-based distributed application.

Fabric Smart Client The Fabric Smart Client (FSC, for short) is a new Fabric client-side component whose objective is twofold. FSC aims to simplify th

Dec 14, 2022
Arbitrum is a Layer 2 cryptocurrency platform that makes smart contracts scalable, fast, and private.
Arbitrum is a Layer 2 cryptocurrency platform that makes smart contracts scalable, fast, and private.

Arbitrum is a Layer 2 cryptocurrency platform that makes smart contracts scalable, fast, and private. Arbitrum interoperates closely with Ethereum, so Ethereum developers can easily cross-compile their contracts to run on Arbitrum. Arbitrum achieves these goals through a unique combination of incentives, network protocol design, and virtual machine architecture.

Jan 8, 2023
Tools to help teams develop smart contracts on the Cardano blockchain
Tools to help teams develop smart contracts on the Cardano blockchain

toolkit-for-cardano toolkit-for-cardano simplifies the development of Cardano smart contracts by providing teams with frequently needed tasks: Build T

Dec 19, 2022
Akroma GO client - Akroma is an EVM based application development platform (smart-contracts).

Akroma Akroma is an EVM based application development platform (smart-contracts). Akroma will utilize a Masternode system, and build out an Oracle pla

Dec 11, 2022