npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@envanik/exchange-contracts

v0.0.1

Published

Contracts for the Envanik.

Downloads

37

Readme

Pangolin Smart Contracts

This repo contains all of the smart contracts used to run Pangolin.

Deployed Contracts

Factory address: 0xefa94DE7a4656D787667C749f7E1223D71E9FD88

Router address: 0xE54Ca86531e17Ef3616d22Ca28b0D458b6C89106

Running

These contracts are compiled and deployed using Hardhat. They can also be run using the Remix IDE. A tutorial for using Remix is located here.

To prepare the dev environment, run yarn install. To compile the contracts, run yarn compile. Yarn is available to install here if you need it.

Please note Currently Hedera does not support Hardhat. There are instructions for Hedera under contracts/hedera/readme.md

Accessing the ABI

If you need to use any of the contract ABIs, you can install this repo as an npm package with npm install --dev @envanik/exchange-contracts. Then import the ABI like so: import { abi as IPangolinPairABI } from '@envanik/exchange-contracts/artifacts/contracts/pangolin-core/interfaces/IPangolinPair.sol/IPangolinPair.json'.

Attribution

These contracts were adapted from these Uniswap repos: uniswap-v2-core, uniswap-v2-periphery, and uniswap-lib.

Deployment

To deploy to any chain you want, you need to complete the following steps:

  • [ ] Copy .env.example to .env and add your private key there
  • [ ] Create a new configuration under constants/NETWORK_NAME.js
  • [ ] Run the following command
yarn deploy [--network NETWORK_NAME]

The deployment script will deploy all the contracts and set them up according to the configuration file.

Configuration

The deployment scripts gets chain specific configuration from the respective file in constants/. You can copy an existing configuration such as constants/fantom_mainnet.js when creating a configuration file for another chain. The deployer must be familiar with the purpose of each constant.

Contracts

Airdrop

The deployment script transfers the amount specified in the config to the Airdrop contract. But the script does not manage the whitelisting. To handle airdrop, the multisig must call setWhitelister() function of Airdrop to appoint a trusted individual to whitelist airdrop recipients using a bot. After multisig ensures that whitelist is accurate, it must call allowClaiming() to begin the airdrop.

Treasury Vester

The deployment script transfers all the PNG (except what went to Airdrop) to TreasuryVester. After the deployment, the multisig must call startVesting() function of TreasuryVester. Then, a bot must be set up the ensure distribute() function of TreasuryVester is called every 24 hours. Vester allocation can only be changed through governance (timelock+multisig by default).

PNG Staking

The deployment script sets up FeeCollector to manage funding of the PNG staking contract. A bot must be set up to call harvest() function of FeeCollector daily to divert MiniChef rewards to the PNG staking contract. The bot would also track swap fees accumulated in FeeCollector and call the harvest() function accordingly to distribute the swap fees to the recipients.

Revenue Distributor

Portion of swap fees accumulated in FeeCollector is sent to RevenueDistributor. This contract allows anyone to call its distributeToken function to allocate revenue to pre-determined recipients. In default configuration, these recipients are the new DAO with 80% allocation, and Pangolin Foundation DAO with 20% allocation. The allocation can be later changed by the joint agreement of both DAOs, using the JointMultisig contract. Any future ERC20 revenue of the DAO must also be transferred to the Revenue Distributor.

Mini Chef

The deployment script adds minimum two farms to MiniChef, based on the constants PNG_STAKING_ALLOCATION, WETH_PNG_FARM_ALLOCATION, and INITIAL_FARMS. INITIAL_FARMS is optional and can be left as an empty array. Multisig can later add or remove farms without timelock or governance.

Faucets

Aurora

Currently on Aurora you need to get funds into Goerli and then bridge across. You can do this by following these steps:

  • Get some ETH from Chainlink Faucet https://faucets.chain.link/goerli
  • Send ETH to Aurora via Rainbow Bridge https://testnet.rainbowbridge.app/

BSC

Faucet: https://testnet.binance.org/faucet-smart

Cronos

Faucet: https://cronos.crypto.org/faucet Testnet Explorer: https://cronos.crypto.org/explorer/testnet3/

Harmony

To get Harmony tokens on the testnet please go here https://faucet.pops.one/. Please note the Metamask address is different to your Harmony address, so you'll need to go to the Explorer to convert https://explorer.pops.one/

Polygon (MATIC)

Faucet: https://faucet.polygon.technology/