/holograph-protocol

Holograph Protocol

Primary LanguageSolidityOtherNOASSERTION

Holograph

Holograph Protocol

Description

Holograph provides omnichain NFT infrastructure for the web3 ecosystem. Holograph Protocol enables the creation, deployment, minting, & bridging of omnichain NFTs with complete data integrity.

Development

Getting started

  1. This project uses asdf for versions management. Install following plugins
  2. Run asdf install after to have the correct tool versions.
  3. Install dependencies with yarn install.
  4. Initialize the project with yarn run init (this will copy sample environment configs).

Building

All smart contracts source code is located in the src directory.

Files from the src directory are automatically transpiled into the contracts directory each time that hardhat compiles the contracts.

To manually run just the build task use yarn run build.

Compiling, Testing, and Deploying (Locally)

  1. Build the latest version of the contracts via yarn run clean-compile (alternatively you can just run yarn run compile).
  2. Start the localhost ganache instances via yarn run ganache-x2 (this will run two instances simultaneously inside of one command). Make sure to run this command in a separate terminal window.
  3. Deploy the smart contracts via yarn run deploy.
  4. Run all tests via yarn run test.

If you need the smart contracts ABI files for dApp integrations, use yarn run abi to get a complete list of all ABI's inside of the abi directory.

Making Changes

Before pushing your work to the repo, make sure to prepare your code

Please make use of the yarn run prettier:fix command to format the codebase into a universal style.

Directory Structure

root

├── config: Network configuration files
├── contracts: Smart contracts that power the Holograph protocol
├── deploy: Deployment scripts for the smart contracts uses Hardhat and Hardhat Deploy
├── deployments: Deployment build files that include contract addresses on each network
├── scripts: Scripts and helper utilities
├── src: Source contracts that get dynamically transpiled down into the finalized output contracts
└── test: Hardhat tests for the smart contracts

Branching Model and Releases

Active Branches

Branch Status
mainnet Accepts PRs from testnet or release/x.x.x when we intend to deploy to mainnet.
testnet Accepts PRs from develop that are ready to be deployed to testnet.
develop Accepts PRs from feature/xyz branches that are experimental or in testing stage.
release/x.x.x Accepts PRs from testnet.

Overview

We generally follow this Git branching model. Please read the linked post if you're planning to make frequent PRs into this repository.

The mainnet branch

The mainnet branch contains the code for our latest "stable" mainnet releases. Updates from mainnet always come from the testnet branch. We only ever update the mainnet branch when we intend to deploy code that has been tested on testnets to all mainnet networks supported by the Holograph protocol. Our update process takes the form of a PR merging the testnet branch into the mainnet branch.

The testnet branch

The testnet branch continas the code that is the latest stable testnet release for all supported networks. This branch is deployed and circulated for beta users of the protocol. Updates are merged in from the develop branch once they're ready for broad usage.

The develop branch

Our primary development branch is develop. develop contains the most up-to-date software that is being tested via experimental network deployments.

Contributing

Read through CONTRIBUTING.md for a general overview of our contribution process.

Official Links

License

Files under this repository are licensed under Holograph Limited Public License (H-LPL) 1.0.0 unless otherwise stated.