4.3.1 • Published 4 years ago

swap.pet-lib v4.3.1

Weekly downloads
3
License
Apache-2.0
Repository
github
Last release
4 years ago

swap.pet-lib

Solidity libraries that are shared across swap.pet contracts

Summary

Design Goals

Solidity libraries that are shared across Swap.Pet contracts. These libraries are focused on safety and gas efficiency.

usage

Install

Run yarn or npx npm i to install dependencies.

Test

Run npx npm test test to execute the test suite.

Usage

Install this in another project:
$ yarn add swap.pet-lib
or:$ npx npm i swap.pet-lib

Then import the contracts via:
import 'swap.pet-lib/contracts/lib/ERC20.sol';

dir

abi:ABI of defi.
defi:online contract of defi with ABI/address.
dapps:logo of Defi App.
contracts:sol file.
tokens:online token info of Defi with ABI/address/symbol/decimals/logo. interfaces: contract interfaces of Defi.

Quickstart

Install

npm install swap.pet-lib

Solidity Usage

pragma solidity ^0.7.0;

import "swap.pet-lib/interfaces/onesplit/IOneSplit.sol";
import "swap.pet-lib/interfaces/erc/IERC20.sol"; 

contract OneSplitSwapper {
    // Uniswap Mainnet factory address
    address constant OneSplitAddress = 0xC586BeF4a0992C495Cf22e1aeEE4E446CECDee0E;

    function _swap(address from, address to, uint256 amountWei) internal {
        IERC20 fromIERC20 = IERC20(from);
        IERC20 toIERC20 = IERC20(to);

        (uint256 returnAmount, uint256[] memory distribution) = IOneSplit(
            OneSplitAddress
        ).getExpectedReturn(
            fromIERC20,
            toIERC20,
            amountWei,
            10,
            0
        );

        IOneSplit(OneSplitAddress).swap(
            fromIERC20,
            toIERC20,
            amountWei,
            returnAmount,
            distribution,
            0
        );
    }
}

create

install LTS Node with nvm

$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.36.0/install.sh | bash
$ source ~/.bash_profile
$ command -v nvm 
$ nvm -v                
0.36.0
$ nvm ls-remote 
<!-- $ nvm install node # "node" is an alias for the latest version(--lts) -->
$ nvm install --lts
$ node --version
v12.18.4
$ npm -v
6.14.6
$ npx -v
6.14.6
$ nvm reinstall-packages
$ mkdir ~/lib
$ cd ~/lib
$ npx npm init
$ npx npm install

Installation Instructions

in app dir:$ npx npm i swap.pet-lib

in sol file:

import "swap.pet-lib/contracts/SafeMath.sol";
import "swap.pet-lib/interfaces/swappet/ISwapPetOracle.sol";

in js file:

const { abi } = require("swap.pet-lib/abi") 
const { defi } = require("swap.pet-lib/defi") 
const { interfaces } = require("swap.pet-lib/interfaces")
const { tokens } = require("swap.pet-lib/tokens") 

sol debug

in sol file:
import "hardhat/console.sol";

create workflow

$ npm i -g truffle
$ npm i -g ganache-cli 
$ mkdir ~/lib   
$ cd ~/lib
$ npm init  
$ npx truffle init
// open new terminal
$ npx ganache-cli --deterministic
$ npm install --save-dev hardhat  
$ npm install --save-dev @nomiclabs/hardhat-truffle5 @nomiclabs/hardhat-web3 web3  

edit .gitignore:

# truffle 
.secret

edit .secret:

$ cp .secret.sample .secret
$ vi .secret

edit config:$ vi hardhat.config.js

add gas-reporter:$ npx npm install -D eth-gas-reporter
get gas report:$ npx truffle test
add coverage:$ npx npm install -D @nomiclabs/buidler solidity-coverage
get coverage:$ npx truffle run coverage
run ganache :$ npx ganache-cli --deterministic
compile:$ npx hardhat compile
test:$ npx hardhat test
accounts:$ npx hardhat accounts
account balance:$ npx hardhat balance --account 0xFABB0ac...

init project with openzeppelin CLI

<!-- $ npm install --save-dev @openzeppelin/cli -->
$ npm install -g @openzeppelin/cli
$ npx openzeppelin --version
2.8.2
OR 
$ npx oz --version 
$ npx oz accounts
$ npx oz balance
$ npx oz init
$ npx npm install @openzeppelin/contracts

edit .gitignore:

# openzeppelin
.openzeppelin/.session
.openzeppelin/dev-*.json
.openzeppelin/unknown-*.json
build/

Automated Smart Contract Tests

edit sol file in dir of contracts

add test file test/SafeNamer.js

add test tool:

$ npm i --save-dev @openzeppelin/test-helpers @openzeppelin/test-environment mocha chai 
$ npm i @truffle/debug-utils 

edit 'package.json':

"scripts": {
  "test": "oz compile && mocha --exit --recursive"
}

run oz test:

$ npm test
or
$ npm run test
<!-- cause Mocha to stop immediately on the first failing test -->
$ npm test -- --bail
4.3.1

4 years ago

4.3.0

4 years ago

4.2.0

4 years ago

4.1.0

4 years ago

4.0.5

4 years ago

4.0.4

4 years ago

4.0.6

4 years ago

4.0.3

4 years ago

4.0.2

4 years ago

1.0.0

4 years ago