droplabmods
v0.1.32
Published
Collection of bits that DropLab use on the reg
Downloads
6
Readme
────────╔═══╗───────╔╗───╔╗
────────╚╗╔╗║───────║║───║║
─────────║║║╠═╦══╦══╣║╔══╣╚═╗
─────────║║║║╔╣╔╗║╔╗║║║╔╗║╔╗║
╔╝╚╝║║║╚╝║╚╝║╚╣╔╗║╚╝║
╚═══╩╝╚══╣╔═╩═╩╝╚╩══╝
─────────────────║║ www.thedroplab.com
─────────────────╚╝ droplab.eth
DropLab Mods
Selection of components, contracts and scripts to make life easy
- onChain contracts & deplyment
- general JS utility scripts
- ethereum interaction helpers
- website generic components, helpers and APIs
Installing
# node.js
npm install droplabmods
# Then use
# javascript
import {...} from 'droplabmods';
# solidity
import 'droplabmods/onChain/contracts/[file/folder...]
Dependencies
- ethers
- erc721a
- @openzepplin/contracts
- typescript
- keccak256
- merkletree.js
- dotenv
onChain
Deployment
# Start new deployment from scratch:
truffle migrate --network {network} --reset
# Continue migration from last deployment:
truffle migrate --network {network}
Replace {network}
with network name ie rinkeby
- Available Networks:
homestead
ID:1
(Ethereum Mainnet)rinkeby
ID:4
(Ethereum testNetwork)kovan
ID:42
(Ethereum testNetwork)local
ID:420
(Ethereum localNetwork)polygon
ID:137
(Polygon Mainnet)mumbai
ID:80001
(Polygon testNetwork)
Deployer Wallet: [ethereum address]
Deployed On: Rinkeby Test Network (ID: 4)
ABI's are available from import build from './build/contracts/[contractName].json'
use the ABI with build.abi
contracts/ERC721/ERC721A-Model.sol
//Using
import "contracts/ERC721/ERC721A-Model.sol"
//Constructure
ERC721AModel(_startingID, BaseURI)
// A contract to sit ontop ERC721A deployments to allow easier modification and managment for tokenURIs
// Also adding a var for startingId. Meaning no editing of the `erc721a` contract is needed.
// Hold the base URI
string private BaseURI_;
// Hold the starting token ID
uint256 private startingID_;
/**
* @dev Overrights the base function in ERC721A
*/
function _startTokenId() internal view override returns (uint256) {
return startingID_;
}
/**
* @dev Base URI for computing {tokenURI}. Overrights the base function in ERC721A
*/
function _baseURI()
internal
view
override
returns (string memory)
{
return BaseURI_;
}
function _setBaseURI(string memory _BaseURI) internal {
BaseURI_ = _BaseURI;
}
/**
* @dev Returns URI with json extention
*/
function tokenURI(uint256 tokenId)
public
view
virtual
override(ERC721A)
returns (string memory)
{
if (!_exists(tokenId)) revert URIQueryForNonexistentToken();
string memory baseURI = _baseURI();
return
bytes(baseURI).length != 0
? string(abi.encodePacked(baseURI, tokenId.toString(), ".json"))
: "";
}
contracts/ERC721/spesific_functions/prereviealURI.sol
//Using
import "contracts/ERC721/spesific_functions/prereviealURI.sol"
// Used to triggar URI reveal onchain
bool public URI_REVEALED = false;
string private preURI_;
/**
* @dev - See {IERC721Metadata-tokenURI}
* @notice - Retuns the token metadata URL. If imageReveald_ == false
* it will return the holding URL
* @param -tokenId {uint256}
*/
function tokenURI(uint256 _tokenId)
public
view
virtual
override
returns (string memory)
{
return
URI_REVEALED
? super.tokenURI(_tokenId)
: preURI_;
}
function setPreURI(string memory _newURI)public onlyOwner {
preURI_ = _newURI;
}
File Structure
.
├── README.md
├── index.js
├── isThisWorking.js
├── bin
│ ├── ABIs
│ └── [contractType]-ABI.js
│ └── index.js
├── onChain
│ ├── index.js
│ ├── contracts
│ ├── collectionWrapping
│ ├── ERC20
│ ├── ERC721
│ ├── ERC1155
│ ├── govenance
│ ├── migrations
│ ├── motherContracts
│ ├── sales
│ ├── staking
│ └── utilities
│ └── migrations
├── scripts
│ ├── index.js
│ ├── web3
│ └── helpers
├── types
│ └── index.js
├── web
│ ├── index.js
│ ├── API
│ ├── components
│ ├── helpers
│ └── API
│ └── ethereum
│ ├── contractInteraction
│ ├── getters
│ └── helpers
│ └── hooks