@fahust/test-inverse-react-lib
v0.0.11195
Published
A complete SDK for inverse usage
Downloads
21
Readme
yalc publish yalc update yarn publish --access=public yarn rollup
🧐 About
La SDK inverse, permet de créer des jetons ERC721 , ERC721A, ERC1155, et de les mettre en vente dans des enchères ou des ventes directes. Chaque jeton reste paramétrable et peut être vendu sur les plateformes les plus connues telles que opensea, rarible...
Toutes les fonctions faisant appel à une variable API_KEY devront être impérativement appelé depuis votre back (serveur, node js)
🏁 Getting Started
Il vous faudra obligatoirement vous inscrire sur nos serveurs, vous pourrez le faire depuis notre plateforme ou bien directement sur la SDK
Prerequisites
Vous aurez besoin de node et npm.
Installing
L'installation se fait de façon très simple, ouvrez un terminal dans la racine de votre projet puis copier la ligne suivante :
npm i @fahust/test-inverse-react-lib
🎈 Usage
Pour utiliser notre package, vous devrez d'abord importer la librairie dans vos composant react :
import { InVerseSdk } from '@fahust/test-inverse-react-lib';
Puis instancier le SDK de la manière suivante :
sdk = new InVerseSdk()
Connection Web3 Brand
Connection vers le wallet de votre choix. À la connections si votre wallet n'est pas enregistrer sur nos serveurs, elle sera donc immédiatement enregistrée.
sdk.connectWeb3Brand(NETWORK_ID,API_KEY_INVERSE)
À partir de ce moment, vous pourrez renseigner des paramètres utilisateurs en envoyant le tableau suivant.
//ACCOUNT_OBJECT
{
username:"",
password:"",
...
}
Ses informations seront gardées sur nos serveurs.
sdk.updateMyAccount(ACCOUNT_OBJECT);
Connection Web3 user
Pour faire des enchères ou des achats, vos utilisateur auront besoin de ce connecter
sdk.connectWeb3User(NETWORK_ID)
Création d'un smart contract de market place
Création d'un smart contract maketplace.sol Ce contrat nécessitera de n'être créé qu'une seule fois, mais est obligatoire pour la suite. L'adresse du contrat ainsi créé sera définitivement reliée à votre compte sur nos serveurs.
sdk.createMarketPlaceContract(API_KEY_INVERSE)
Création d'un smart contract de token
Création d'un smart contract token, parmis les choix suivant ERC721 , ERC721A, ERC1155. Ces contrats de tokens pourront être créé autant de fois que vous le voudrez pour ajouter des collections. Pour vous permettre des frais de gaz minimum, nous enregistrons les adresses de ses contrats directement sur nos serveurs. Attention, le nom et le symbole sont immuables, réfléchissez bien avant de créer votre contrat. À la création du contrat, des metadatas du token sont enregistré sur ipfs ainsi que sur nos serveurs ainsi que les signatures ECDSA.
sdk.createTokenContract(API_KEY_INVERSE,CONTRACT_NAME:string,CONTRACT_SYMBOL:string,BASE_URI:string:optional)
Connection Smart Contract
Connections vers le smart contract créé au préalable par nos utilisateurs. Envoi une requête vers nos serveurs pour récupérer l'adresse du smart contract lié a votre adresse de wallet.
sdk.getMyAddressMarketPlace(API_KEY_INVERSE).then((res)=>{return ArrayOfAddress = res}).catch((err)=>{return err})
Pour récupérer vos adresses de smart contract de token créer vous devrez appeler cette fonction vers le serveur qui vous renverra un tableau d'adresse :
sdk.getMyAddressTokens(API_KEY_INVERSE).then((res)=>{return ArrayOfAddress = res}).catch((err)=>{return err})
Pour faire des modifications sur votre marketplace, rajouter des auctions, les paramétrer puis les liés a vos collections de token, ainsi que permettre vos utilisateurs a effectuer des achats et enchère vous devrez rajouter l'adresse du market place dans la SDK :
sdk.connectAddressMarketPlace(ADDRESS_MARKET_PLACE)
🔧 Method
Method Dynamic
Vous pouvez faire appel à toutes les fonctions du smart contract a l'aide de notre composant Method
Connection au smart contract nécessaire
sdk.method(NAME_METHOD,ADDRESS_METHOD,SEND_VALUE,ARGUMENT)
Argument requis :
- NAME_METHOD => Le nom de la méthode exact du smart contract que vous désirez appeler
- ADDRESS_METHOD => L'address exact du smart contract que vous désirez appeler Argument optionel :
- SEND_VALUE => La valeur en eth que vous désirez envoyer vers le smart contract
- ARGUMENT => Les arguments nécessaires à la fonction, sous forme de tableau, un élément pour chaque valeur.
Exemple :
sdk.method(mint,"0x0000000000000","1000000",[10,"10","test"])
Method static
Ou bien, vous pouvez utiliser les méthodes suivantes de façon statique :
Method TOKEN
//Permet un mint de plusieurs token (max 100 pour erc721 et erc1155, max 1000 pour le erc721A)
sdk.mint(NUMBER_OF_MINT,ADDRESS_CONTRACT_TOKEN)//only owner
sdk.getAllNft(ADDRESS_CONTRACT_TOKEN).then((res)=>{return ArrayOfNFTs = res}).catch((err)=>{return err})
//Utilise ECDSA pour enregistrer les adresses whitelisté vers le serveur
sdk.addWhitelist(ADDRESS_WHITELISTED,ADDRESS_CONTRACT_TOKEN)
sdk.removeWhitelist(ADDRESS_WHITELISTED,ADDRESS_CONTRACT_TOKEN)
sdk.isWhitelisted(ADDRESS_WHITELISTED,ADDRESS_CONTRACT_TOKEN).then((res)=>{return res}).catch((err)=>{return err})
sdk.getWhitelist(ADDRESS_CONTRACT_TOKEN).then((res)=>{return ArrayOfWhitelisted = res}).catch((err)=>{return err})
Method MARKETPLACE
Le marketplace contient des listes, qui peuvent être des ventes d'objet direct, ou bien des enchères. Elle peuvent toutes deux contenir un tableau des id token mis en vente ainsi qu'un tableau de prix.
A la création d'une liste, les tokens listé seront transféré vers votre contract de marketplace.sol
Pour une vente direct les token contenu dans cet liste pourront être acheter un par un. Pour une enchère les tokens contenu seront tous vendu a la fin de l'enchère.
La création ou la mise a jour de vente nécessitera un objet de ce type :
//OBJECT_LIST
{
startTime:"", //timestamp in seconds
timeAuction:"", //timestamp in seconds
tokenIds: [], //array of id token
tokenPrice: [], //array of price for anyone
basePrice: "", //Price of object
addressOfContratToken: "", //address of contract token
minimumPrice: "", //price minimum of bid
royalties: [], //address of royalties
typeOfList : 0 ,//direct sell or auction (0 or 1)
}
sdk.createList(OBJECT_LIST)//onlyOwner // transfert des tokens
sdk.updateList(OBJECT_LIST)//onlyOwner
//Démarrer une vente aux enchères
sdk.getList(list_id).then((res)=>{return ListObject = res}).catch((err)=>{return err})
sdk.getLists().then((res)=>{return ListObject = res}).catch((err)=>{return err})
sdk.getHistoricList(list_id)//Récupère une liste fermé depuis nos serveurs
sdk.getHistoricLists()//Récupère les liste fermé depuis nos serveurs
//Mettre fin à une vente aux enchères enverra les NFTs aux gagnants et enverra le dépôt du gagnant aux royalties.
//Pour une optimisation maximale de frais de gaz, nous transférons les data de la list fermé vers nos serveurs.
sdk.closeList(list_id)//onlyOwner or winner ?
//Une vente aux enchères ne peut être annulé qu'avant le démarrage de cette dernière.
sdk.cancelList(list_id)//onlyOwner
Vos utilisateurs pourront ensuite intéragir avec vos listes de la façon suivante :
AUCTION
//BIDDING_VALUE Doit être plus élevé que l'offre d'enchère actuel
///@dev verify list, started, not finish, bid > msg.value, payable precedent bidder
sdk.bidding(WEI_BIDDING_VALUE)
DIRECT SELL
//Permet aux clients d'acheter et de recevoir son NFT en échange d'un achat.
///@dev Verifiy list, token is listed, no transfered, send money, transfer to buyer, unset of list token and price
sdk.buy(WEI_VALUE,ID_TOKEN)//only sender
🔧 COMPONENTS
Nous méttons a votre disposition des composants natifs
-Composant d'affichage d'un token (contient le token id, l'image, l'address owner, le nom et le symbol de la collection)
⛏️ Built Using
- Typescript - Tooling
- NodeJs - Server Environment
✍️ Authors
- @fahust - Initial work
🎉 Acknowledgements
- Hat tip to anyone whose code was used
- Inspiration
- References