솔리디티 컨트랙트를 테스트해볼 수 있는 가장 간단한 방법은 자체 로컬 클레이튼 네트워크를 사용하는 것입니다. 트랜잭션을 테스트해볼 수 있는 10개의 샘플 계정과 개인키, 무제한 테스팅을 위한 무제한 API 호출이 제공되며, 가스비가 소모되지도 않습니다.

시작해보겠습니다.

1. 요구사항 — 필요한 툴 설치하기

시작에 앞서 기본적으로 필요한 것들이 있습니다. 아래 링크에서 다운 받아 보겠습니다:

Git: git을 설치하고 get — version를 이용해 버전을 확인합니다.

Docker: docker를 설치하고 동작 시킵니다

Jq: Jq를 설치하고 jq — version를 이용해 버전을 확인합니다

2. 클레이튼 네트워크 시작하기

아래의 git 리포지토리에 도커라이즈된 클레이튼을 작동시키기 위한 모든 스크립트가 포함되어 있습니다. 아래 스크립트를 실행시키세요.

$ git clone <https://github.com/klaytn/local-klaytn-deploy.git>
$ cd local-klaytn-deploy
$ ./1.prepare.sh
$ ./2.start.sh

기본적으로 한 개의 클레이튼 컨센서스 네트워크를 배포할 것입니다. prepare 스크립트는 최신 클레이튼 도커 이미지를 다운 받고 도커 컨테이너에 로컬 블록체인 네트워크를 부팅할 것입니다. 아래 파라미터들이 1.prepare.sh에서 테스트넷의 기본값입니다.

3. 네트워크 상태 확인

클레이튼 네트워크가 잘 동작하는지 확인하기 위해서 우선 도커 컨테이너들의 상태를 확인합니다. 아래의 명령어를 실행하세요.

$ ./3.status.sh

4. 로그 가져오기

2.start.sh를 실행한 뒤 클레이튼 네트워크에 로그를 출력합니다. 다른 셸에 로그를 출력하고 싶다면 아래의 명령어를 실행하세요.

$ ./4.logs.sh

5. 네트워크 중지시키기

네트워크를 중지시키려면 아래의 명령어를 실행하세요.

$ ./5.stop.sh

6. 네트워크 재실행하기

멈춘 네트워크를 재실행하려면 아래의 명령어를 입력하세요.

$ ./6.resume.sh

7. 네트워크 종료하기

네트워크를 종료시키기 위해서는 아래의 명령어를 실행하세요.

$ ./7.terminate.sh

Note: 생성된 모든 트랜잭션과 블록은 사라집니다.

로컬 노드를 성공적으로 동작시켰다면 이제 클레이튼 네트워크에서 DApp 개발을 할 준비가 된 것입니다. 문제가 생겼을 시 Discord나 Gitter 채널에 연락주세요.

 

https://medium.com/klaytn-kr/%ED%81%B4%EB%A0%88%EC%9D%B4%ED%8A%BC-%EB%A1%9C%EC%BB%AC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-229c75e940f9

 

클레이튼 로컬 네트워크 사용하기

로컬 네트워크를 구축해봅시다

medium.com

 

 

 

이 튜토리얼의 목적은 클레이튼 개발 환경을 구축하고 이런저런 실험을 해보는 것입니다. 클레이튼 네트워크에 스마트 컨트랙트를 배포하는 가장 간단한 방법을 보여줍니다.

첫째, 로컬 네트워크에 스마트 컨트랙트를 배포할 것입니다.

다음으로는 클레이튼의 테스트넷인 바오밥에 스마트 컨트랙트를 배포해 보겠습니다.

1. 준비: 필요한 툴 준비

일단 시작하기에 앞서 기본적으로 필요한 툴이 있습니다. 아래 링크에서 다운 받아 보겠습니다:

git을 설치하고 get — version를 통해 버전을 확인합니다.

docker를 설치하고 동작하는 것을 확인합니다

Node v10.21.0 이상을 설치하고 node — version를 통해 버전을 확인합니다.

Jq를 설치하고 jq — version를 통해 버전을 확인합니다.

Screenshot

이제 본격 개발을 해보겠습니다.

2. 클레이튼 샌드박스 다운로드

클레이튼 샌드박스는 개발자들이 클레이튼에서 Dapp 개발을 시작할 수 있도록 도와주는 보일러플레이트 코드입니다. 샌드박스는 Truffle 프레임워크를 사용해 스마트코드를 컴파일, 배포, 테스팅할 수 있게 해줍니다.

이제 샌드박스 리포지토리를 클론하고 필요한 라이브러리들을 설치해보겠습니다.

git clone https://github.com/Krustuniverse-Klaytn-Group/klaytn-dev-sandbox.git 
cd klaytn-dev-sandbox 
npm install 
npm install -g truffle@v5.1.61

VsCode와 같은 에디터에서 klaytn-dev-sandbox 폴더를 열어 주세요. 그러면 아래와 같은 폴더 구조가 보입니다.

>contracts 폴더에는 예시 스마트 컨트랙트 몇 가지가 있습니다

>migrations 폴더에는 스마트 컨트랙트 배포할 수 있는 deployment 스크립트가 있습니다

>network 폴더에는 로컬 클레이튼 네트워크를 시작할 수 있는 스크립트가 있습니다

>src 폴더에는 Dapp UI 개발을 위한 코드가 있습니다

3. 로컬 클레이튼 네트워크 부팅하기

컨트랙트 배포를 할 수 있는 환경이 필요합니다. 개발을 위해서는 Ganache와 흡사한 로컬 블록체인을 사용하는 것이 더 나을 수 있습니다. 여러분의 컴퓨터에서 동작하며, 인터넷이 필요하지 않고 트랜잭션 실행을 위해 테스트 계정 10개를 제공합니다.

아래와 같이 간단하게 로컬 클레이튼 네트워크를 배포할 수 있습니다. 기본 설정으로 한 개의 클레이튼 컨센서스 노드를 배포합니다. 로컬 네트워크를 실행하는 것에 대한 더 많은 정보는 이 포스팅을 참고하세요.

npm run run:klaytn

. 실행 로그를 확인하기 위해서는 npm run run:klaytn:log을 실행하세요

. 네트워크를 멈추기 위해서는 npm run run:klaytn:stop을 실행하세요

. 네트워크를 재개하기 위해서는 npm run run:klaytn:resume을 실행하세요

. 네트워크를 완전히 멈추기 위해서는 npm run run:klaytn:terminate을 실행하세요

. 로그 파일을 삭제하기 위해서는 npm run run:klaytn:cleanlog를 실행하세요

4. 컨트랙트 작성하기

우리 프로젝트의 컨트랙트 디렉토리에 몇 가지 샘플 컨트랙트가 있습니다. 아래는 FT, NFT 그리고 멀티토큰을 생성할 수 있는 표준 컨트랙트들입니다. 이 샘플 컨트랙트를 네트워크에 배포하여 토큰을 전송할 수 있습니다.

1. ERC-20 토큰 컨트랙트와 유사한 KIP7

2. ERC-721 토큰 컨트랙트와 유사한 KIP17

3. ERC-1155 토큰 컨트랙트와 유사한 KIP37

기존의 스마트 컨트랙트에 더해 컨트랙트 폴더에 자체적인 스마트 컨트랙트를 작성할 수 있습니다. 아래에 매우 단순한 greeter 컨트랙트가 있습니다:

KlaytnGreeter는 인사 메시지를 반환하는 단순한 컨트랙트로, 컨트랙트 배포 시에 메시지를 설정할 수 있습니다.

pragma solidity ^0.8.0; 
contract KlaytnGreeter { 
/* Define variable greeting of the type string */ 
string greeting; 
/* This runs once when the contract is created */ 
constructor (string memory _greeting) public { 
greeting = _greeting; 
} 
/* Main function */ 
function greet() public view returns (string memory) { 
return greeting; 
} 
}

위의 코드를 컨트랙트 폴더의 KlaytnGreeter.sol 파일에 저장합니다. 다음 단계는 로컬 네트워크에 스마트 컨트랙트를 컴파일하고 배포하는 것입니다.

5. 로컬 네트워크에 컨트랙트 배포하기

Migrations 디렉토리에는 모든 배포를 위한 스크립트가 있습니다. 기본값으로 토큰 컨트랙트를 위한 배포 스크립트가 있습니다.

1. 우선 새로 생성된 스마트 컨트랙트를 위한 배포 스크립트를 추가해보겠습니다. 아래의 코드는 로컬 네트워크에 KlaytnGreeter 컨트랙트를 컴파일하고 배포하며 abi와 배포된 주소를 src 폴더에 저장합니다.

const fs = require(‘fs’) 
var greeter = artifacts.require(‘KlaytnGreeter’) 
module.exports = function (deployer) { 
deployer.deploy(greeter, ‘Welcome to Klaytn!’).then(() => { 
if (greeter._json) { 
fs.mkdir(‘./src/deployed’, { recursive: true }, (err) => { 
if (err) throw err 
}) 
// Save the deployed abi to greeterABI file in the src folder. 
fs.writeFile(‘./src/deployed/greeterABI’, JSON.stringify(greeter._json.abi, 2), (err) => { 
if (err) throw err 
}) 
} 
// Save the deployed address to greeterAddress file in the src folder. 
fs.writeFile(‘./src/deployed/greeterAddress’, greeter.address, (err) => { 
if (err) throw err 
console.log( 
`The deployed contract address * ${greeter.address} * is recorded on deployedAddress file` 
) 
}) 
}) 
}

위의 코드를 복사해서 5_greeter_migration.js로 저장할 수 있습니다. 아래 커맨드를 실행하고 컨트랙트를 배포합니다.

truffle migrate — f 5 — network klaytn

성공적으로 배포되고 나면 아래의 로그가 보일 것입니다.

2. 이제 네트워크에 이 샘플 컨트랙트 중 하나를 배포해 보겠습니다. 아래 커맨드를 실행하면 FT 컨트랙트를 컴파일하고 배포할 수 있습니다.

npm run deploy:klaytn:kip7

성공적으로 배포되었다면 src 및 배포 폴더에 ABI 및 주소 파일이 생성되어 있을 것입니다.

6. 테스트 네트워크에 컨트랙트 배포하기

테스트 네트워크에 배포하는 것은 로컬 네트워크와 비슷하지만 약간의 설정 변경이 필요합니다. Baobab은 이더리움의 Ropsten과 같은 클레이튼의 테스트넷입니다.

테스트넷에 접근하기 위한 가장 쉬운 방법은 이더리움의 Infura와 비슷한 퍼블릭 노드 서비스인 KAS (Klaytn API Service)를 이용하는 것입니다. KAS는 테스트넷 사용을 위한 퍼블릭 클레이튼 노드에 접근을 가능하게 해주며, 무료 및 유료 플랜을 통해 메인넷을 이용할 수도 있습니다.

1. Klaytn API Service에 가입해서 Baobab 테스트넷에 연결하기 위한 Access key와 Secret key를 받을 수 있습니다.

2. 다음 단계는 테스트넷 설정을 업데이트하기 위해 truffle-config.js를 설정하는 것입니다.

kasBaobab: { 
provider: () => { 
const option = { 
headers: [ 
{ name: ‘Authorization’, value: ‘Basic ‘ + Buffer.from(accessKeyId + ‘:’ + secretAccessKey).toString(‘base64’) }, { name: ‘x-chain-id’, value: ‘1001’ } 
], 
keepAlive: false, 
} 
return new HDWalletProvider(privateKey, new Caver.providers.HttpProvider(“https://node-api.klaytnapi.com/v1/klaytn", option)) }, 
network_id: ‘1001’, //Klaytn baobab testnet’s network id 
gas: ‘8500000’, 
gasPrice:’25000000000' 
}

샌드박스에 truffle-config.js 파일은 이미 설정이 되어 있습니다.

3. 제1 단계에서 받은 Access key와 Secret key를 .env 파일에 추가합니다.

ACCESS_KEY_ID=KASKY9YK7JE3NEXQZN6PWT86 
SECRET_ACCESS_KEY=nO14rGPiz1QDpDdjWGcYoVTueC3ksJTcZ_eg3887 
KAS_TESTNET_API_URL=https://node-api.klaytnapi.com/v1/klaytn

4. 이제 Baobab 테스트 네트워크에 배포할 모든 설정 업데이트들이 있습니다. 아래 커맨드를 실행하면 배포할 수 있습니다.

truffle migrate — f 1 — to 2 — network kasBaobab

아래 결과에서 src/deployed 폴더에 ABI 및 주소 파일들을 확인할 수 있습니다.

7. 결론

로컬 노드를 구축하고 스마트 컨트랙트를 성공적으로 배포하셨습니다! 이제 다음 단계는 컨트랙트를 호출해보는 것입니다. 이 튜토리얼을 참고하면 프론트엔드 앱을 개발하는 데 도움이 될 겁니다. 혹시 문제가 생겼을 경우 Discord/Gitter 채널에 문의 주세요.

 

 

https://medium.com/klaytn-kr/%ED%81%B4%EB%A0%88%EC%9D%B4%ED%8A%BC-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC%EC%97%90-%EC%8A%A4%EB%A7%88%ED%8A%B8-%EC%BB%A8%ED%8A%B8%EB%9E%99%ED%8A%B8-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0-a2704e37f19c

TON DNS는 사용자가 암호화폐 월렛, 스마트 컨트랙트 및 웹사이트에 사람이 읽을 수 있는 이름을 지정하게 해주는 서비스입니다.

TON DNS를 사용하면 탈중앙형 서비스로의 이용은 인터넷의 웹 사이트에 접속하는 것과 유사합니다.

탈중앙형 네트워크에서 귀하의 닉네임

여러분도 사용자 이름을 등록하여 소셜 미디어 및 일부 메신저 앱에 계정을 만들어 다른 사람들이 더 쉽게 찾을 수 있게 할 수 있습니다.

이제 TON 블록체인에 도메인 이름을 등록하고 암호화폐 월렛에 할당할 수 있습니다. 이 도메인 이름은 The Open Network에서 여러분의 닉네임이 됩니다.

긴 월렛 주소 대신 도메인 이름을 공유하세요.

 

 

토큰을 보낼 때 받는 사람의 월렛 주소 대신 도메인 이름을 입력하세요.

 

 

TON 익스플로러의 검색 필드에 도메인 이름을 입력하세요.

톤키퍼, TON 웹 월렛톤스캔 서비스는 이미 TON DNS에 대한 지원과 연동됩니다. 대부분의 다른 TON 기반 앱도 TON 생태계 전체에서 닉네임(도메인 이름)을 사용할 수 있도록 지원할 계획입니다.

사용자가 도메인 이름을 등록하는 것 외에도, 개발자는 탈중앙형 서비스의 스마트 컨트랙트에 대해서도 도메인 이름을 등록할 수 있습니다. 이제 스마트 컨트랙트에도 메신저 앱의 봇처럼 고유의 닉네임을 사용하게 되는 것입니다.

간편한 블록체인

이전 기사에서 앱과 서비스를 최대한 간소하게 이용할 수 있게 만드는 데 노력을 집중하겠다고 밝혔던 적이 있습니다.

TON은 아무것도 모르는 초보자라도 탈중앙형 기술이 제공하는 보안과 네트워크의 이점을 누릴 수 있을 정도로 대량 채택을 목표로 삼았습니다.

TON 개발자들은 최근 이 목표를 이루고자 자신들의 생산량을 늘렸습니다. 예를 들어 @wallet 텔레그램 봇의 최신 업데이트를 통해 사용자는 메신저의 채팅 내에서 다른 사용자에게 직접 톤코인을 보낼 수 있고 톤키퍼에서의 NFT 연동은 암호화폐 월렛에 대한 새로운 표준을 수립했습니다. 

TON 기반 앱에서 기술적인 전문 용어와 정보를 피한다는 점을 강조했습니다. 여러분이 감당 못할 정도로 블록 번호와 트랜잭션 해시를 드리는 일은 없을 것입니다.

사용자가 즉시 볼 수 있는 유일한 기술적 세부사항은 월렛 주소입니다. 월렛 주소는 전화나 은행 카드 번호보다 간단하지만 TON DNS의 런칭으로 이 프로세스가 훨씬 더 간소화될 것이라는 사실을 알게 되어 기쁩니다.

여기서 머물지 않고 우리는 완전한 탈중앙형 인터넷을 향해 한 걸음 더 나아가고 있습니다

2022년 3분기에 TON 사이트와 TON 프록시를 런칭할 예정입니다.

이 탈중앙형 기술은 사용자와 웹 사이트 소유자 모두에게 더 많은 개인 정보 보호와 보안을 누리게 해드립니다.

이 릴리스 외에도 블록체인 스마트 컨트랙트와 인터넷 리소스 간의 상호작용을 용이하게 하는 도구도 있을 것이고 그 반대의 경우도 마찬가지입니다.

월렛 주소는 TON DNS에 할당할 수 있지만 TON 사이트에도 할당할 수 있습니다.

TON DNS에서 보게 될 것은 종종 임의적으로 또는 잘못된 이유로 사이트의 도메인을 차단할 수 있는 중앙형 도메인 레지스트리에 대한 환영할만한 대안입니다.

TON 사이트 의 개발 과정.

".ton" 도메인 이름은 NFT입니다

TON DNS의 도메인 영역을 ".ton"이라고 합니다.

사용자는 도메인 이름을 이렇게 등록할 것입니다. “alice.ton”

".ton" 도메인 이름은 NFT입니다.

즉, 도메인 이름을 얻으면 일반 NFT를 처리하는 것과 같은 방식으로 도메인 이름을 저장하거나, 선물로 주거나, 판매할 수 있습니다. 

도메인은 월렛에 저장되고, 이미 TON DNS를 지원하는 Getgems 또는 Disintar 등의 NFT 마켓플레이스에서 판매할 수 있습니다.

NFT 마켓플레이스 Getgems에서 판매되는 도메인 이름

.ton 도메인 이름 규칙

".ton" 도메인 이름은 4자 이상 126자 이하여야 합니다.

"com", "org", "gov" 등 잘 알려진 인터넷 도메인 이름과의 혼동을 피하기 위해 4자 미만의 도메인 이름은 등록할 수 없습니다.

도메인은 영문자, 숫자, 하이픈을 포함해야 합니다.

그러나 엄격히 말해 도메인 이름은 이모지를 묘사할 수 있지만 이들 중 많은 부분이 똑 같아 보이기 때문에 사용할 수 없습니다. 예를 들어, 사기꾼이 😗 😙이모지를 조작해 순진한 사용자를 쉽게 속이는 데 사용한다고 생각해 보십시오. 

1년에 한 번, 도메인 소유자는 1년 동안 자신의 도메인 기간을 연장하기 위해 도메인의 스마트 컨트랙트에 나노톤을 보내야 합니다. 기간을 연장하지 않을 경우 도메인은 경매에 부쳐집니다. 이는 소유자가 액세스 권한을 잃는 경우 도메인을 영구적으로 잃지 않게 하려는 것입니다.

탈중앙화

TON DNS는 탈중앙형 도메인 이름 시스템입니다. 여기에는 여러분의 도메인 이름을 차단할 수 있는 "관리자"가 없습니다.

예외적인 경우, 네트워크 전체 투표를 통해 소유자를 변경하거나 도메인을 삭제할 수 있습니다. 대부분의 네트워크는 DNS뿐만 아니라 블록체인의 모든 구성도 변경할 수 있지만 네트워크에는 수백 개의 독립적인 밸리데이터가 있기 때문에 그러한 변경에는 예외적으로 타당한 이유가 필요합니다. 

초기 도메인 이름 배포는 공개 경매가 될 것입니다

초기 도메인 이름 배포는 경매를 통해 모두에게 평등한 조건으로 탈중앙화될 것입니다.

경매는 2022년 7월 30일 dns.ton.org 웹사이트에서 시작됩니다.

더 많은 분들이 준비할 수 있도록 지금부터 입소문을 퍼뜨리는 데 도움을 줄 경매를 한 달간 런칭할 예정입니다.

경매는 스마트 컨트랙트에서 처리합니다. 도메인 판매로부터 얻은 코인은 유통으로부터 제거되고, 스마트 컨트랙트로 보내져 전혀 어떤 출금도 되지 않고 영원히 그대로 남을 것입니다. 

경매 절차에 대한 상세 내용은 저희 테스트넷 https://dns.ton.org/?testnet=true에서 알아 보실 수 있습니다. 테스트넷에 실제 톤코인을 송금하지 마십시오. 이곳으로 송금하신 톤코인은 영원히 잃게 됩니다. 

경매 규칙

 

초기 TON DNS 경매

·     도메인 경매는 일주일 동안 진행됩니다. 앞으로는 모든 사용자들이 보다 편리하게 경매를 진행할 수 있도록 경매 기간이 단축될 수 있습니다.

·     모든 사용자는 톤코인에 입찰하여 도메인 이름을 받을 수 있습니다.

·     경매 종료까지 1시간 미만 남은 때에 입찰을 하면 다른 사용자가 반대 입찰을 할 수 있도록 1시간 더 시간이 연장됩니다.

·     새 입찰가는 얼마든 이전 입찰가보다 5% 이상 높아야 합니다.

·     경매가 성사되면 가장 높은 입찰가를 제시한 사용자가 도메인 이름을 받게 됩니다.

경매 규칙은 시작 시간에 따라 약간씩 다를 수 있습니다.

개발자

자료.

도메인마다 최대 2^256개의 DNS 레코드를 저장할 수 있는데, 월렛 주소와 웹사이트 뿐만 아니라 원하는 모든 정보를 저장할 수 있습니다. 

이것은 여러분의 제품에서도 사용할 수 있습니다.

하위 도메인 관리를 담당하는 임의의 스마트 컨트랙트를 도메인에 할당할 수 있습니다. 이것으로 새로운 메커니즘을 만드는 데 사용할 수 있는 모든 기능을 구현할 수 있습니다.

경매가 불편한 시간에 진행될 경우 사용자가 아침에 일찍 일어날 필요가 없도록 경매에 사용자의 참여를 단순화할 수 있는 보조 서비스에 대한 저작물은 언제든 환영합니다. 또한, 서비스는 해당 작업에 대해 약간의 수수료를 톤코인으로 징수할 수 있습니다.

결론

TON 생태계의 최신 주요 구성요소인 TON DNS의 런칭 소식을 발표하게 되어 기쁩니다. 

TON 기반 도메인 이름은 7월 30일 열리는 경매에서 등록하실 수 있습니다.

 

https://telegra.ph/TON-DNS-07-01

 

TON DNS

TON DNS는 사용자가 암호화폐 월렛, 스마트 컨트랙트 및 웹사이트에 사람이 읽을 수 있는 이름을 지정하게 해주는 서비스입니다. TON DNS를 사용하면 탈중앙형 서비스로의 이용은 인터넷의 웹 사이

telegra.ph

 

+ Recent posts