## OpenSea ERC-1155 Starter Contracts
- [About these contracts](#about-these-contracts)
- [Configuring the Lootbox](#configuring-the-lootbox)
- [Why are some standard methods overridden?](#why-are-some-standard-methods-overridden)
- [Requirements](#requirements)
- [Node version](#node-version)
- [Installation](#installation)
- [Deploying](#deploying)
- [Deploying to the Rinkeby network.](#deploying-to-the-rinkeby-network)
- [Deploying to the mainnet Ethereum network.](#deploying-to-the-mainnet-ethereum-network)
- [Viewing your items on OpenSea](#viewing-your-items-on-opensea)
- [Troubleshooting](#troubleshooting)
- [It doesn't compile!](#it-doesnt-compile)
- [It doesn't deploy anything!](#it-doesnt-deploy-anything)
- [Minting tokens.](#minting-tokens)
- [License](#license)
- [ERC1155 Implementation](#erc1155-implementation)
# About these contracts
This is a sample ERC-1155 contract for the purposes of demonstrating integration with the [OpenSea](https://opensea.io) marketplace for crypto collectibles. We also include:
- A script for minting items.
- A factory contract for making sell orders for unminted items (allowing for **gas-free and mint-free presales**).
- A configurable lootbox contract for selling randomized collections of ERC-1155 items.
On top of the features from the [OpenSea ERC721 sample contracts](https://github.com/ProjectOpenSea/opensea-creatures), ERC1155
- supports multiple creators per contract, where only the creator is able to mint more copies
- supports pre-minted items for the lootbox to choose from
## Configuring the Lootbox
Open MyLootbox.sol
1. Change `Class` to reflect your rarity levels.
2. Change `NUM_CLASSES` to reflect how many classes you have (this gets used for sizing fixed-length arrays in Solidity)
3. In `constructor`, set the `OptionSettings` for each of your classes. To do this, as in the example, call `setOptionSettings` with
1. Your option id,
2. The number of items to issue when the box is opened,
3. An array of probabilities (basis points, so integers out of 10,000) of receiving each class. Should add up to 10k and be descending in value.
4. Then follow the instructions below to deploy it! Purchases will auto-open the box. If you'd like to make lootboxes tradable by users (without a purchase auto-opening it), contact us at contact@opensea.io (or better yet, in [Discord](https://discord.gg/ga8EJbv)).
## Why are some standard methods overridden?
This contract overrides the `isApprovedForAll` method in order to whitelist the proxy accounts of OpenSea users. This means that they are automatically able to trade your ERC-1155 items on OpenSea (without having to pay gas for an additional approval). On OpenSea, each user has a "proxy" account that they control, and is ultimately called by the exchange contracts to trade their items.
Note that this addition does not mean that OpenSea itself has access to the items, simply that the users can list them more easily if they wish to do so!
# Requirements
### Node version
Either make sure you're running a version of node compliant with the `engines` requirement in `package.json`, or install Node Version Manager [`nvm`](https://github.com/creationix/nvm) and run `nvm use` to use the correct version of node.
## Installation
Run
```bash
yarn
```
## Deploying
### Deploying to the Rinkeby network.
1. You'll need to sign up for [Infura](https://infura.io). and get an API key.
2. You'll need Rinkeby ether to pay for the gas to deploy your contract. Visit https://faucet.rinkeby.io/ to get some.
3. Using your API key and the mnemonic for your MetaMask wallet (make sure you're using a MetaMask seed phrase that you're comfortable using for testing purposes), run:
```
export INFURA_KEY="<infura_key>"
export MNEMONIC="<metmask_mnemonic>"
truffle migrate --network rinkeby
```
### Deploying to the mainnet Ethereum network.
Make sure your wallet has at least a few dollars worth of ETH in it. Then run:
```
yarn truffle migrate --network live
```
Look for your newly deployed contract address in the logs! �コ
### Viewing your items on OpenSea
OpenSea will automatically pick up transfers on your contract. You can visit an asset by going to `https://opensea.io/assets/CONTRACT_ADDRESS/TOKEN_ID`.
To load all your metadata on your items at once, visit [https://opensea.io/get-listed](https://opensea.io/get-listed) and enter your address to load the metadata into OpenSea! You can even do this for the Rinkeby test network if you deployed there, by going to [https://rinkeby.opensea.io/get-listed](https://rinkeby.opensea.io/get-listed).
### Troubleshooting
#### It doesn't compile!
Install truffle locally: `yarn add truffle`. Then run `yarn truffle migrate ...`.
You can also debug just the compile step by running `yarn truffle compile`.
#### It doesn't deploy anything!
This is often due to the truffle-hdwallet provider not being able to connect. Go to infura.io and create a new Infura project. Use your "project ID" as your new `INFURA_KEY` and make sure you export that command-line variable above.
### Minting tokens.
After deploying to the Rinkeby network, there will be a contract on Rinkeby that will be viewable on [Rinkeby Etherscan](https://rinkeby.etherscan.io). For example, here is a [recently deployed contract](https://rinkeby.etherscan.io/address/0xeba05c5521a3b81e23d15ae9b2d07524bc453561). You should set this contract address and the address of your Metamask account as environment variables when running the minting script:
```
export OWNER_ADDRESS="<my_address>"
export FACTORY_CONTRACT_ADDRESS="<deployed_contract_address>"
export NETWORK="rinkeby"
node scripts/advanced/mint.js
```
Note: When running the minting script on mainnet, your environment variable needs to be set to `mainnet` not `live`. The environment variable affects the Infura URL in the minting script, not truffle. When you deploy, you're using truffle and you need to give truffle an argument that corresponds to the naming in truffle.js (`--network live`). But when you mint, you're relying on the environment variable you set to build the URL (https://github.com/ProjectOpenSea/opensea-creatures/blob/master/scripts/mint.js#L54), so you need to use the term that makes Infura happy (`mainnet`). Truffle and Infura use the same terminology for Rinkeby, but different terminology for mainnet. If you start your minting script, but nothing happens, double check your environment variables.
# License
These contracts are available to the public under an MIT License.
### ERC1155 Implementation
To implement the ERC1155 standard, these contracts use the Multi Token Standard by [Horizon Games](https://horizongames.net/), available on [npm](https://www.npmjs.com/package/multi-token-standard) and [github](https://github.com/arcadeum/multi-token-standard) and also under the MIT License.

小林家的珂女仆
- 粉丝: 35
- 资源: 4656
最新资源
- DSP280049C串口升级方案:全方位支持,包含Bootloader源码、上位机程序及用户示例工程,操作指南一览无余 ,DSP280049C串口升级方案:包含完整Bootloader源码与操作手册
- OBC&DCDC相关参数设计与计算
- 图书馆管理系统(SSH框架).zip(毕设&课设&实训&大作业&竞赛&项目)
- 基于BES秃鹰算法优化BP神经网络模型的多输入单输出拟合预测系统及其MATLAB程序实现,基于BES秃鹰智能算法的BP神经网络权值和阈值优化MATLAB实现,基于BES秃鹰智能算法优化BP神经网络模型
- JavaEE结课项目.zip(课设&实训&大作业&项目)
- 基于SSM+JSP的学生请假系统.zip(毕设&课设&实训&大作业&竞赛&项目)
- 全国大学生FPGA创新设计邀请赛的作品.zip
- 双层非线性优化模型:省内外电力市场及风险应对机制研究(以CVaR和线性转换为中心),基于CVaR方法的双层非线性优化模型在电力市场及省间交易中的研究与应用,主题:提出了一种双层非线性优化模型,将省内电
- 基于Qt的数据库应用课程设计-景点门票管理系统.zip(课设&实训&大作业&项目)
- Opencv实战基于python,银行卡识别、全景图片拼接、OCR图片识别.zip(毕设&课设&实训&大作业&竞赛&项目)
- 基于django的admin后台管理系统.zip(毕设&课设&实训&大作业&竞赛&项目)
- 前后端分离的简易博客项目(vue+springboot).zip(毕设&课设&实训&大作业&竞赛&项目)
- 基于西门子S7-1200的停车场车位智能控制系统:传感器检测、PLC控制及HM画面组态仿真,基于西门子S7-1200智能停车场的车位管理系统 - 传感器监控与PLC自动化控制方案 ,基于西门子120
- 基于Vue框架的Sparkle项目:TypeScript、JavaScript、HTML前端技术实践源码
- 基于AdminLTE +Django + Mysql 的会议室管理系统.zip(毕设&课设&实训&大作业&竞赛&项目)
- 西门子S7-1500 PLC在制药厂洁净空调系统中的精准控温控湿实践:包含冷水机组与洁净室空调机组案例研究,博图V15.1编程版本参考案例,西门子S7-1500 PLC在制药厂洁净空调系统中的精准控温
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



评论0