일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ethers
- vue기초
- ethers v6
- ethers type
- 스마트컨트렉트 예약어 함수이름 중복
- 깃허브명령어
- 체인의정석
- 스마트컨트렉트프록시
- nest.js설명
- ethers typescript
- 컨트렉트 배포 자동화
- 러스트 기초
- git rebase
- 프록시배포구조
- 머신러닝기초
- 스마트컨트렉트테스트
- Vue.js
- rust 기초
- ethers websocket
- 컨트렉트 동일한 함수이름 호출
- 스마트컨트렉트 함수이름 중복 호출
- 러스트 기초 학습
- multicall
- 러스트기초
- nestjs 튜토리얼
- ambiguous function description
- 스마트 컨트렉트 함수이름 중복
- chainlink 설명
- Vue
- SBT표준
- Today
- Total
체인의정석
Oasys testnet 사용방법 본문
특이점
1. 일단 오아시스 메인넷 자체에는 임의적인 컨트렉트 배포가 불가능하고 등록된 공식 컨트렉트들을 통해서만 함수호출을 통해 미리 정해진 규격의 erc20 및 721 배포가 가능. (오아시스 메인넷에서는 web2x 서비스 불가)
2. SandVerse 라는 테스트용도의 레이어 2에서는 컨트렉트 배포가 가능하지만 공식 문서상 해당 레이어2는 테스트넷 용도이며 컨트렉트 배포가 가능한 나머지 체인(레이어2, verse)들은 미리 해당 체인의 관리자들이 수락을 해준 화이트리스트에 등록된 지갑 주소만 컨트렉트 배포가 가능.
3. 레이어2에 해당되는 각 verse들은 가스비가 무료라고 되어 있으며 테스트넷에서 배포시에도 가스비가 들지 않음. 나머지 레이어2 체인들도 스캔등을 보면 가스비가 0. (대신 구글폼 신청을 통한 지갑 주소 등록이 필요, 어떤 레이어2를 사용할지 정해지면 더 확실히 파악 가능)
참고자료
1. 레이어2 verse 설명
https://docs.oasys.games/docs/architecture/verse-layer/verse-layer
"Free Gas For Users
On Oasys verse,users don't have to pay gas fees, which is paid by verse operators. By taking transacation fees from verse builders, it can maintain sustainablity.
Verse Builder
Anyone can build a verse if they deposit more than 1 million OAS on the verse contract. On the Verse-Layer, a Verse Builder takes care of node operations and is required to operate the server properly. Also, you can configure what smart contracts can be deployed and what transactions can be executed without using any gas.
2. 레이어1 hub 설명
https://docs.oasys.games/docs/architecture/hub-layer/hub-layer
Smart Contract
Deployment of new smart contracts to the Hub-Layer is not allowed by design. Only smart contracts accepted by Oasys will be deployed. Transaction execution can be done by paying gas in OAS. Accepted smart contracts are those related to FT/NFT, Rollup, and Bridge.
3. SandVerse 설명
https://docs.oasys.games/docs/verse-developer/sandverse
4. SandVerse 튜토리얼
https://docs.oasys.games/docs/verse-developer/game/1-1
배포 진행
아래 예제가 가장 잘되어 있음
Client
https://github.com/oasysgames/dino-runner-client
Contract
https://github.com/oasysgames/dino-runner-solidity
hardhat config
*가스비가 0이라는 점이 타 체인과 차이점, faucet도 따로 필요없다.(오아시스 레이어2 기준, 오아시스 레이어1은 함부로 배포가 안되도록 설정되어 있음)
require("@nomiclabs/hardhat-waffle");
// Create secrets.json file with private key and remove comment out
//const { PRIVATE_KEY } = require('./secrets.json');
// This is a sample Hardhat task. To learn how to create your own go to
// https://hardhat.org/guides/create-task.html
task("accounts", "Prints the list of accounts", async (taskArgs, hre) => {
const accounts = await hre.ethers.getSigners();
for (const account of accounts) {
console.log(account.address);
}
});
// You need to export an object to set up your config
// Go to https://hardhat.org/config/ to learn more
/**
* @type import('hardhat/config').HardhatUserConfig
*/
module.exports = {
solidity: "0.8.4",
defaultNetwork: "hardhat",
networks: {
hardhat: {
},
hmvtest: {
url: 'https://rpc.testnet.oasys.homeverse.games/',
chainId: 40875,
gasPrice: 0,
accounts: [
// Provide your private key here
// Remove comment out to use value from secrets.json
//PRIVATE_KEY
],
},
},
};
*Oasys는 2024년 6/5기준 최신 버전 컨트렉트 및 hardhat은 작동하지 않아 2년전 dino runner에서 따로 모듈들을 뽑아내 테스트한 결과 아래와 같은 버전으로 해야 다 작동이 가능한 것을 확인
"devDependencies": {
"@nomiclabs/hardhat-ethers": "^2.0.5",
"@nomiclabs/hardhat-waffle": "^2.0.3",
"chai": "^4.3.6",
"ethereum-waffle": "^3.4.0",
"ethers": "^5.6.0",
"hardhat": "^2.9.1"
},
"dependencies": {
"@account-abstraction/contracts": "^0.6.0",
"@openzeppelin/contracts": "^4.7.0",
"@openzeppelin/contracts-upgradeable": "^4.7.0",
"@openzeppelin/hardhat-upgrades": "^1.21.0",
"base64-sol": "^1.1.0",
"dotenv": "^16.4.5"
}
배포 코드는 해당 버전에서 다음과 같다.
const { ethers, upgrades } = require("hardhat");
require("dotenv").config();
async function main() {
const deployer = new ethers.Wallet(process.env.PK, ethers.provider);
console.log("Deployer address: ", deployer.address);
const ExContract = await ethers.getContractFactory("ExContract");
const exContract = await upgrades.deployProxy(ExContract, [], {
initializer: "initialize",
});
await exContract.deployed();
console.log("exContract:", exContract.address);
console.log("exContract owner:", await exContract.owner());
const ExContract2 = await ethers.getContractFactory("ExContract2");
const exContract2 = await ExContract2.deploy(exContract.address);
console.log("🛠️ Deploy exContract2");
await exContract2.deployed();
console.log("exContract2:", exContract2.address);
2년전 버전으로 업그레이더블, 일반 배포 문법을 다음과 같이 사용하고 오픈제플린도 2년전 버전으로 모두 호환하여 줄 시 오류가 발생하지 않는다.
*최신 버전으로는 특정 op코드가 작동하지 않는 것으로 판단되며, 별도의 업데이트 전까지는 구버전으로 하는 것을 추천. 다중 체인 배포시 따로 브랜치를 파거나 레포를 파는 형태로 진행중이다.
'블록체인 > 퍼블릭 블록체인' 카테고리의 다른 글
폴리곤 Polygon amoy 테스트넷 사용방법 (0) | 2024.06.05 |
---|---|
AVAX 아발란체 테스트넷 사용법 (0) | 2024.06.05 |
sepolia base 테스트넷 사용방법 (0) | 2024.05.24 |
Upgradable 컨트렉트 작성 시 추가해야할것들 (0) | 2023.03.28 |
web3에서 트랜잭션 정보를 가져오는 방법들과 차이점(getTransactionReceipt, getTransaction, getBlock) (0) | 2023.02.23 |