Skip to content

Latest commit

 

History

History
419 lines (253 loc) · 13.2 KB

readme-guide.md

File metadata and controls

419 lines (253 loc) · 13.2 KB

README GUIDE

The following is a guide to creating a readme for XYO projects.

Please follow this guide from the Logo on down to the credits. To use, you may copy this example below from the raw source.

Company Logo First

example logo

Status of the repo (build, code quality, chat option)

Badges should only reflect the master branch, please avoid develop and master branch table.

For more instruction on setting up badges, please click here

Your build branch status using Github Actions

Identify and remediate vulnerabilities using Snyk

Known Vulnerabilities

Quality of source code and bug detection using SonarCloud

Sonarcloud Status

Maintainability and test coverage using Code Climate

Maintainability

Test Coverage

Code review against engineering guidelines using Better Code Hub

BCH compliance

Code review and monitoring of code quality over time using Codacy

Codacy Badge

If you are working on a dApp and implementing Web3 use Commitizen

Commitizen friendly

If this repo is published on NPM

NPM

If this repo is published on Bintray (Android Projects)

Download

If this repo is published on JitPack (Android Projects)

If this repo is published on Cocoapods (Swift Projects)

Breakdown of badges based on language and/or platform

Node.JS/Bootstrap/React

  • Github Actions
  • Better Code Hub
  • SonarCloud (implementing SonarQube)
  • Code Climate
  • Codacy
  • Snyk
  • Nodei.com (NPM)

Kotlin/Android/Java

  • Github Actions
  • Better Code Hub
  • SonarCloud (implementing SonarQube)
  • Code Climate
  • Codacy
  • Snyk
  • Bintray
  • JitPack

iOS/MacOS/Swift

  • Github Actions
  • Better Code Hub
  • SonarCloud (implementing SonarQube)
  • Code Climate
  • Codacy
  • CocoaPod
  • Swift Package Manager

C/Firmware

  • Github Actions
  • Better Code Hub
  • SonarCloud (implementing SonarQube)
  • Code Climate
  • Codacy

A Table of Contents required

Table of Contents

Stay consistent with Title and Installation/Usage/License/Credits

Table of Contents

The Layout

Sections - this is the primary header for the remainder of the readme - required

Sections

Title - Required Should be written with one hash (#) before the title

Simple Consensus Smart Contract Dapp Library (dapp-scsc-solidity)

BCH compliance Known Vulnerabilities Commitizen friendly

Short Description - A one sentence description of the project - required

Short Description

A Simple Consensus Smart Contract library for all nodes in XYO

Long Description - A longer description of the project for more detail - optional but recommended

Long Description

This package has been built to streamline the dApp build process for anyone ready to integrate XYO into their project. Especially crucial in this library are the XyGovernance and XyStakingConsensus contracts. The XyPayOnDelivery contract is a solid example of the execution of all nodes in XYO, and is used with our Payable on Delivery Demo. The package contains contracts that are upgradeable (with the exception of the Parameterizer) so that you can fix security vulnerabilities and introduce new features without migrating all of the data unecessarily.

Suggestions - Light or Stern suggestions as to what the developer should know prior to using or contributing to the project

You should be familiar with

  • Solidity
  • Web3
  • Truffle
  • Ganache

Install - Installation instructions if necessary. This can be called Set Up if there are no installation steps

Install

Requirements: Make sure that the developer has the resources needed

  • In the command line go ahead and install using npm
npx zos link dapp-scsc-solidity

Add any instrucions after installation here

  • Run

How to use the application or SDK

Usage

Requirements before use

Requirements:

  • Watch this video on staking a node in XYO
  • Check out dApper
    • dApper allows you to interact with the smart contracts from the scsc library on the browser

Suggestions of additional resources/knowledge prior to use

Suggestions:

  • Follow the walkthrough below to familiarize yourself with the scsc in the dApper environment. This is a good starting point to understanding how our scsc interacts with XYO.

Walkthrough - An example of how to utilize the repo - optional

Walkthrough

How to add stake on XYO Diviner

Access our SCSC library through IPFS

use this hash QmaHuJh3u5J4W8WYhJnfH1yZUWWwUaehsVLbUPMEd4ymqN

Then direct your browser to use our dAppper tool

with the hash

https://dapper.layerone.co/settings/QmaHuJh3u5J4W8WYhJnfH1yZUWWwUaehsVLbUPMEd4ymqN

The contract will load, giving you access to the contracts through the contract simulator.

Start with the XyERC20Token

Connect your metamask wallet on the Kovan network

Check your balance using the balanceOf() function from the ERC20 contract

Once you have verified that you have enough balance to stake the diviner, select the XyStakingConsensus contract This contract stores all the stake of the network

Approve the stake for the Diviner in the XyERC20 contract (make sure that you have the address for the XyStakingConsensus) using the approve() function.

Go through metamask to submit the transaction. You have now approved stake, let's keep going.

Create a diviner

The diviner is represented by a Stakable token

  • Mint one token with your wallet address by selecting the XyStakableToken and the address below
  • Select the mint() function and paste your wallet address into the beneficiary field
  • Confirm the transaction on metamask

This will produce one non-fungible token (ERC721). This is unique to this specific diviner.

Then select the tokenByIndex() function and enter 0 for your token address.

Copy the token address, this is virtual id of your diviner

Return to the XyStakingConsensusContract and select its address below

  • Select the stake() function
  • Paste the diviner id into the stakee field
  • enter an amount to stake (make sure it is in your approved limits!)
  • Click execute

You have just successfully added stake to a diviner

note you are the staker, and the stakingId is the ledger of the stake that you have in the diviner

To check out the data of the stake, select the stakeData() function, paste in the stakingId in the sole field.

You will now get a returned JSON object with your stake amount, the block it was staked on, the staker, and the stakee.

API - usually required, but can be optional if there is no API or if it is not ready

API

XyERC20Token

transfer

  • Sends a specific value of tokens from your XYO account to another

  • parameters

    • address _to
    • uint256 _value

transferFrom

  • Sends a specific value of tokens from one (not yours) XYO address to another XYO address

  • parameters

    • address _from
    • address _to
    • uint256 _value
  • returns

    • bool success

approve

  • Sets an allowance for tokens for another address check out our staking walkthrough for an example

  • parameters

    • address _spender
    • uint256 _value
  • returns

    • bool success

approveAndCall

  • Sets an allowance for tokens for another address with a notification for the other contract

  • parameters

    • address _spender
    • uint _value
    • bytes memory _extraData
  • returns

    • bool success & approval notification with _value and _extraData

burn

  • destroys tokens

  • parameters

    • uint256 _value
  • returns

    • bool success

A list of XYO team members who maintain this repo - required

Maintainers

  • Kevin Weiler
  • Phillip Lorenzo

Contributing - Instructions on how to contribute including notices on pre-commit builds, best practices, and necessary steps prior to a pull request.

Contributing

If you'd like to contribute to the SCSC as a developer or just run the project from source the directions below should help you get started.

First, clone the repository. And set the branch to the develop branch

  git clone -b develop https://github.com/XYOracleNetwork/dapp-scsc-solidity

Then change working directory to that of the repository

  cd dapp-scsc-solidity

Download dependencies

  yarn install

After installing, go ahead and open in your favorite text editor, ours is Visual Studio Code

 ➜ dapp-scsc-solidity code .

Execute these truffle steps:

Set up a local Ganache instance

ganache-cli --port 8545 --deterministic < if you want to set the networkID --networkId idNumber>

Using the deterministic flag is a good way to keep consistent when in development mode

keep this terminal window open!

In another terminal window (or tab)

Compile the contracts

truffle compile

Migrate the contracts

truffle migrate

You will see transactions for each contract in your Ganache instance and their addressess

Test the contracts

truffle test

Ganache will work again executing transactions while executing the unit tests. Note if you did not compile or migrate, no worries, this command will do that for you.

We recommend testing after any revisions you make to contracts.

If you would like to know more about how the contracts are upgradeable, read the PROXY.md file.

Developer Guide - optional, but recommended - Additional notes for developers Refer to the developer guide here for an example

Developer Guide

Developers should conform to git flow workflow. Additionally, we should try to make sure every commit builds. Commit messages should be meaningful serve as a meta history for the repository. Please squash meaningless commits before submitting a pull-request.

License - required - Will almost always be LGPL-3.0

License

See the LICENSE.md file for license details.

Credits - required - This can include any third party libraries that you used that require a credit, and the exact sentence with graphic for XY as seen below

Credits

Made with 🔥and ❄️ by XYO