아래처럼 계약주소(truffle migrate 과정에서 결과로 출력되며, 이더스캔에서도 확인가능)를 넣으면 토큰기호나 소수점은 알아서 세팅된다.
12. 메인넷에 배포
truffle-config.js에 다음 부분 추가해주면 되는데
mainnet: {
provider: () => new HDWalletProvider(MNEMONIC, `wss://mainnet.infura.io/ws/v3/${PROJECT_ID}`),
network_id: 1,
confirmations: 2, // # of confirmations to wait between deployments. (default: 0)
timeoutBlocks: 200, // # of blocks before a deployment times out (minimum/default: 50)
skipDryRun: true, // Skip dry run before migrations? (default: false for public nets )
gas: 21000,
gasPrice: 50000000000, // 50GWEI
networkCheckTimeout: 100000,
},
gas와 gasPrice 부분은 설명이 좀 필요하다.
gas는 gasLimit을 설정하는 부분인데, gas는 스마트계약 복잡성에 따라 런타임에 이러리움에서 정확하게 부여하게 되지만, 사전에 알수는 없다. 사전에 알기 힘든 이유는 정지문제(Halting Problem)때문인데 주어진 프로그램이 언제 멈출지, 또는 계속 실행될지를 모르기 때문이다. 요금은 실제 사용된 gas에 의해 부과되기에 gasLimit을 무조건 높은 값으로 해놓고 보는게 개발자에게는 유리할 수 있는데, 이더리움 블록마다 gasLimit 합계의 제한이 걸려있어서(80만 GWEI던가), 채굴자들이 블록하나 안에 많은 트랜잭션을 포함하기 위해 기피할 수 있다는 점이 있다. 그렇다고 너무 작은 값을 주었다가 실제 사용량이 그보다 크면 out of gas 오류가 나며 트랜잭션이 실패해 버리게 된다(단, 트랜잭션 실패시에도 사용된 gas는 환원되지 않고 gas 비용은 손실되므로 주의가 필요!!) 적절한 gasLimit을 대략적으로 계산해주는 툴도 있다고 하는데 아직 써보진 않았다.
gasPrice는 이와 다르게, 개발자가 높게 책정할수록 그대로 채굴자의 이득이 되는데, 너무 낮으면 채굴이 진행이 잘 안고, 너무 높으면 손해이므로 어느 정도가 적절한지는 가스트래커를 통해 확인할 수 있다.
채굴자에게는 실제로 스마트계약 복잡성에 따라 사용된 gas * gasPrice를 보상으로 지급된다.
ERC는 Ethereum Request for Comments의 약자로 이더리움 표준을 의미합니다.
그 중에서 ERC-20은 이더리움 플랫폼에서 스마트 계약을 통해 생성되는 토큰을 위한 기술 표준입니다.
이 표준은 토큰이 어떻게 전송되고, 어떻게 접근할 수 있는지, 전체 공급량이 얼마인지 등과 같은 규칙을 정의합니다.
2015년 제정후 많은 코인들이 발행되었으며 그 예시는 체인링크(LINK), 유니스왑(UNI), 골렘(GNT), MANA, SNT 등입니다.
WIK라는 ERC-20 토큰을 만든다고 가정하고, 단계별 개발 과정은 다음과 같습니다.
1. Solidity 학습: Solidity는 이더리움 스마트 컨트랙트를 작성하는 데 사용되는 프로그래밍 언어입니다. Solidity에 대한 이해를 바탕으로 ERC-20 토큰을 구현할 수 있습니다. 온라인에서 제공되는 Solidity 관련 문서, 튜토리얼 및 자료를 참고하세요.
2. 개발 환경 설정: Remix, Truffle, Hardhat 등의 이더리움 개발 프레임워크를 사용하여 개발 환경을 설정하세요. 이러한 프레임워크는 스마트 컨트랙트 개발, 테스트, 배포를 쉽게 할 수 있도록 도와줍니다.
3. ERC-20 스마트 컨트랙트 작성: ERC-20 토큰 표준에 따른 스마트 컨트랙트를 작성하세요. 토큰 이름(Wonil Token), 심볼(WIK), 총 발행량, 소수점 자릿수 등의 정보를 포함해야 합니다. 또한, 표준 ERC-20 인터페이스를 구현해야 하며, 다음 함수들을 포함해야 합니다. totalSupply balanceOf transfer transferFrom approve allowance
4. 스마트 컨트랙트 테스트: 작성한 스마트 컨트랙트를 테스트하세요. 로컬 이더리움 개발 환경(Ganache 등) 또는 테스트넷(Ropsten, Rinkeby 등)을 사용하여 컨트랙트 기능을 테스트하고, 문제가 없는지 확인합니다.
5. 스마트 컨트랙트 배포: 테스트를 완료한 후, 이더리움 메인넷에 스마트 컨트랙트를 배포합니다. MetaMask, MyEtherWallet, Truffle, Hardhat 등의 도구를 사용하여 컨트랙트를 배포할 수 있습니다. 배포 과정에서 이더리움을 소비하는 가스비를 지불해야 합니다.
6. 토큰 관리 및 분배: 스마트 컨트랙트가 성공적으로 배포되면, 토큰을 관리하고 사용자에게 분배할 수 있습니다. 토큰의 소유권 이전, 토큰 락업, 에어드랍 등 다양한 기능을 구현하고 활용할 수 있습니다.
7/ 토큰 추적 및 지갑 통합: WIK 토큰 사용자들이 토큰을 지갑에서 추적하고 관리할 수 있도록 지갑 통합을 지원해야 합니다. 이를 위해 사용자들에게 토큰의 컨트랙트 주소, 심볼, 소수점 자릿수를 제공해야 합니다. 일반적으로 이더리움 지갑들은 ERC-20 토큰을 자동으로 인식하고 지원합니다.
8. 거래소 상장: 토큰의 유동성을 높이고 가치를 창출하기 위해 암호화폐 거래소에 상장을 고려할 수 있습니다. 거래소에 따라 상장 요구사항과 절차가 다르므로, 원하는 거래소의 상장 가이드라인을 확인하고 준수해야 합니다.
9. 토큰 마케팅 및 커뮤니티 활성화: WIK 토큰의 인지도를 높이기 위해 마케팅 활동을 계획하고 실행해야 합니다. 또한, 커뮤니티를 만들어 토큰 사용자들과 소통하며 토큰 가치를 향상시키는 데 도움이 됩니다.
10. 지속적인 개발 및 관리: 토큰의 성장을 위해 지속적인 개발과 관리가 필요합니다. 새로운 기능 추가, 보안 업데이트, 토큰 이벤트 및 파트너십을 통해 토큰의 가치를 높일 수 있습니다.
☞편집자 노트 '스마트 컨트랙'=비트코인엔 1차원적 거래내용만 기록된다. 'A 계좌에서 B계좌로 비트코인 1개가 송금됐다'는 식이다. 애초부터 블록의 크기가 1Mb로 작았기 때문에 복잡한 거래내용을 담을 수 없었다. 이와 달리 이더리움은 블록 크기를 키우면서 'if'라는 조건문을 넣을 수 있도록 설계했다. 예컨대 '서울시간 내일 오전 10~11시 서울 종로구에 비가 100mm 이상 내리면 A계좌에서 B계좌로 1이더를 송금한다'는 계약을 담을 수 있게 됐다. 이더리움 위에 날씨 보험을 같은 상품을 올려놓을 수 있게 됐다는 얘기다. 더욱이 이 계약은 이더리움 프로토콜에 의해 자동 집행된다. 금융기관이나 중앙화된 인증기관의 개입이 필요 없다. 그래서 '스마트(smart)'한 '컨트랙(contract·계약)'이라고 한다. 이더리움이 등장한 이후 이더리움 위에서 돌아가는 수많은 탈중앙화된 앱(Dapp)이 나오고 있는 건 이 때문이다. 스마트 컨트랙이 탑재되면서 비트코인을 일반 전화기에 비유한다면 이더리움은 스마트폰이라고 부를 수 있게 됐다.
파일코인은 프로토콜랩스(Protocol Labs)가 IPFS를 토대로 네트워크에 인센티브를 추가해 만든 스토리지 공유시스템이다. 파일코인은 2017년 ICO를 통해 2억 달러 규모의 자금을 유치했다. IPFS는 탈중앙화 웹이다. IPFS 방식에서 하나의 서버가 다운되거나 해킹되더라도 이용자는 파일을 잃지 않는다. 파일코인이 IPFS의 인센티브 레이어가 된다.
오호, 근데 파일의 내용을 직접 블럭체인에 올린다는 프로젝트는 없나?
IPFS를 통해 사용자는 인터넷 상에 존재하는 모든 데이터를 블록체인에 올릴 수 있다. 그러나 이는 직접 해당 데이터를 블록체인에 올린다는 것을 의미하지는 않는다. 만약 사용자가 1GB 용량의 데이터를 이더리움블록체인에 올린다면 엄청난 양의 가스비를 지불해야 할 것이다. IPFS 방식에서는 네트워크에 해당 데이터를 업로드하면, 파일 고유의 해시값이 산출된다. IPFS 상에서 이 해시값은 해당 파일의 영구적인 이름으로, 파일명을 무엇으로 하든 해당 파일은 동일한 해시값을 갖게 된다. 만약 한 사용자가 파일A를 다운로드 받고 싶다면 주변 노드에게 파일A의 해시값을 가지고 있는 노드를 탐색하게 된다. 결국 파일A의 해시값은 해당 파일에 대한 영구적인 링크라고 할 수 있다. 따라서 위변조의 위험이 없게 된다.
아래 내용은 어렵진 않고, 재미있네. 특히 저장과 검색을 나눈 부분이랑. 저장증명을 불시에 해야한다는게 재밌네 ㅋ
파일코인에는 저장소시장과 검색시장의 두 가지 시장이 존재한다. 그리고 각 시장에서는 저장소 채굴자들과 검색 채굴자라고 불리는 노드들이 존재한다.
저장소시장에서 클라이언트는 저장소 채굴자에게 토큰을 지불하고 파일을 저장할 수 있다. 검색시장에서 클라이언트는 검색 채굴자에게 토큰을 지불하고 원하는 파일을 다운로드 받을 수 있다. 두 시장 모두 클라이언트와 채굴자는 자신의 주문을 설정하거나 가격을 제시할 수 있으며, 상대방의 제안을 받아들이거나 거부할 수 있다.
시공간증명 합의 알고리즘은 저장소 채굴자가 파일을 일정기간 동안 저장하고 있음을 증명하는 것이다. 저장소 채굴자는 지속적으로 증명을 받고, 불시에 파일코인 블록체인이 증명을 요구할 경우 증명을 제출해야 한다.
아래 내용은 약간 깊이가 있네. 핵심은 저장소를 많이 제공할수록 채굴자로 선출될 확률(?)이 높아진다는 것인듯
파일코인 블록체인의 채굴자는 해당 증명을 검증하고 블록에 기록하게 된다. 파일코인 블록체인은 소모적인 작업증명(PoW) 방식을 유용한 작업으로 대체하기 위해 네트워크 상에서 사용되는 저장소의 양이 새로운 블록을 생성하는 채굴자로 선정될 확률에 비례하도록 설정하였다. 즉 지분증명(PoS) 방식의 합의 알고리즘으로 이해할 수 있다. 그러나 지분증명 방식을 넘어 파일코인 개발팀은 매 블록 생성 주기마다 하나 또는 그 이상의 적은 인원의 채굴자를 선출하는 새로운 합의 알고리즘을 개발하고 있다. 이때 채굴자로 선출된 확률을 자신이 제공중인 저장소 양에 비례하도록 한다. 이처럼 파일코인 팀은 합의 과정을 효율적이며 동시에 IPFS 웹 발전과 같은 방향성을 갖도록 설계하고 있다.
이론은 그렇다 치고 현실이 궁금한데.. 아래에서 엿볼 수 있는듯 하다. 중국이 묻어있고 뭔가 아주 희망적이진 않은듯?
2020년 10월 15일 매인넷의 공개로 10월 15일부터 파일코인의 정식 채굴이 가능하다. 파일 코인 채굴에 대한 채굴법이 바뀌면서, 많은 스토리지 저장 채굴업체들이 명확한 채굴량을 계산해내지 못하기에 투자자들의 주의가 필요하다. 현재 파일코인 채굴은 중국이 전체 채굴량의 80% 이상을 차지하고 있으며, 초기 채굴부터 채굴이 가능할지 여부를 판단할 필요가 있다. 파일코인 채굴량 순위를 통해서 확인할 수 있다. 현재 채굴량 순위를 보면 1위부터 20위까지가 전체 채굴량의 60% 이상을 차지하고 있다.
흠.. 아래 부분을 보면 19년부터 정체중인거 아닌지 모르겠네 ㅠ 현제 활동이 있나? github은 있나?
고속 성장과 함께 파일코인이 직면한 문제 중 하나가 부상했다. 다름 아닌 효율적으로 확장을 하지 못하는 문제다. 파일코인은 새로운 사용자와 참여자가 들어오면서 아직 자사의 모델을 어떻게 효율적으로 확장할 것인지 문제를 해결하지 못했다고 인정했다. 이에 따라 2018년 1월, 파일코인은 수요와 요구에 따라 확장을 할 수 있도록 플랫폼을 재설계하기 전까지 새로운 사용자와 참여자를 받지 않겠다고 발표했다. ICO 이후, 자사의 문제를 인정한 파일코인은 당해 8월 프로젝트 진행 과정을 공유하며 로드맵을 공개했다. 파일코인은 2019년 중반 블록체인 기술을 활용한 탈중앙화 데이터 스토리지 네트워크를 공식 선보일 예정이다. 공식 메인넷 출시에 앞서 테스트 네트워크는 2019년 1분기에 선보일 예정이며 메인넷 출시는 2019년 2분기 혹은 3분기로 예정됐다. 물론 해당 로드맵은 낙관적인 전망으로 추정한 것인 만큼 변동될 가능성은 얼마든지 있다고 덧붙였다.
1) 저렴한 수수료 2) 뚜렷한 고객혜택 3) 스테이블코인을 통한 가격안정성 유지를 차별점으로 내세움
Terra프로젝트에서 사용하는 스테이킹 코인이 LUNA이며, 스테이블 코인이 UST이다.
Luna는 UST가격 안정성을 유지하는 핵심 수단.
기본원리: 테라 프로토콜에서는 누구든지 LUNA와 UST를 교환할 수 있다.
LFG(Luna Foundation Guard)
테라 생태계를 위해서 결정된 그룹
UST가격 하방 압력을 흡수하기 위해 비트코인을 꾸준히 매입
UST > $1.00인 경우
UST가 매력적이어서 수요가 몰려 1달러보다 비싼가격에 거래된다고 가정.
테라프로토콜에 $1.00가치의 LUNA를 제공하면 새로 발행된 1UST를 받을 수 있다.
이 사람은 $1.00가치의 LUNA를 잃고, $1.00보다 더 가치가 올라간 1UST를 얻었기 때문에 이득(차익거래)
UST발행에 사용된 LUNA는 소각됨. LUNA공급량 감소. UST 공급량 증가. 따라서 UST가격하락 LUNA가격상승.
UST < $1.00인 경우
UST의 매력이 떨어져서 모두 던져서 1달러보다 싸졌다고 가정.
테라프로토콜에 이번에는 거꾸로 1UST를 제공하면 새로 발행된 $1.00가치의 LUNA를 받을 수 있다.
이 사람은 $1.00보다 저렴한 1UST를 잃고, $1.00가치의 LUNA를 얻었기 때문에 이득(차익거래)
LUNA발행에 사용된 UST는 소각(아마도). UST공급량 감소. LUNA공급량 증가. 따라서 UST가격 상승. LUNA가격하락.
LFG에서 비트코인을 사모은 후에는 UST가 $0.98 보다 떨어지면 LUNA가 아닌 $0.98가치의 BTC로 교환해줌. 이렇게 하면 LUNA가치가 하락하는게 아니라고 죽음의 나선극복 가능. 다시말해 BTC의 역할은 만약 UST가 $0.98 이하로 떨어질 때 UST를 BTC로 안전하게 exit 할 수 있게 함으로써 UST의 하방압력을 낮춰주는 역할을 하게 됨. 문제는 폭락장에서 UST와 교환해줄 BTC가 동나면 더이상 방법이 없는것인데.. 그것이 실제로 일어나 버림 ㅠ
위의 매커니즘을 보자면,
사람들이 UST를 많이 사용할수록 LUNA의 가격은 상승함을 알 수 있다.
앵커 프로토콜(Anchor Protocol)
UST예치자에게 연20%이자를 제공하는 대출 플랫폼(탈중앙 은행)
UST매력의 1등공신이며, UST중 71%가 여기 예치돼 있었음
루나사태
UST $1.00 패킹이 실패한 사건은 어떻게 일어났을까?
죽음의 나선(The Death Spiral)이라고도 하는데,
1UST를 $1.00가치의 LUNA로 모두가 바꾸는 과정에서 너무나 많은 LUNA가 발행되고 가격이 하락됨.
즉.. 모두가 UST를 던지기만 하면 LUNA의 가치가 끊없이 떨어지는데, 별도담보가 없으면 휴지가 되어 망하는 구조.
기존의 '나'라는 정체성이 웹에 존재하는 형태를 보면, 각 회사의 DB안에 내가 작성하거나 활동한 기록이 존재하는 형태이다. 그리고 각 회사들은 내가 활동한 기록을 자신들의 자산으로 활용해서 비지니스를 한다. 여기서 '나'는 참여자 이지만 이익에서는 완전히 소외되어 있거나 부분적으로만 참여가능하다(지식인 내공이나 adsense를 통한 수익등)
이걸 '나'를 중심으로 탈중앙화된 기록으로 모은다면? 그래서 각 회사가 망해도 내 기록이 온전하다면?
이 기록은 온전히 내것이므로 사고팔수 있다면? 각 회사는 이러한 나의 정보를 '렌더링'만 하는 회사로 역할이 축소된다면?
A. 비트코인과 달리 이더리움은 무한발행이 가능해서 주의가 필요하다고 한다. (여기 참조) 자세한건 좀 더 공부하면서 적어보자.
Q. 스마트컨트렉트는 어떻게 동작하나?
A. "스마트 계약은 중간에 제3의 보증기관을 끼우지 않고 개인간(P2P)에 원하는 계약을 체결할 수 있도록 해주는 디지털 전자계약 기능이다."
Q. 스마트컨트렉트에 사용된 언어는 무엇인가?
A. 솔리디티.
"스마트 계약에 기반한디앱은 모두 이더리움 가상머신(EVM) 환경에서 동작하는데 이더리움 고유의 프로그래밍 언어인 솔리디티로 작성된다. 이것을 solc로컴파일해서 생성된 이더리움바이트코드는 geth를 통해 블록체인에 등록된다. 블록체인에 저장된 바이트코드는 결국 이더리움 가상머신(EVM)에서 실행된다. geth와 이더리움 가상머신은 하나의 프로세스로 동작하고, 솔리디티로 작성된 스마트 계약은 이더리움 가상머신에서 동작하기 때문에 특정 운영체제에 종속되지 않는다."
Q. ERC-20토큰의 원리는 무엇이며 어떻게 발행할 수 있는가?
A. "ERC-20은 Ethereum Request for Comments 20의 약자로 이더리움 네트워크 상에서 유통할 수 있는 토큰의 호환성을 보장하기 위한 표준 사양이다. 이더리움은 자체 블록체인을 기반으로 다양한 탈중앙화 된애플리케이션들이 작동할 수 있도록 고안된 하나의플랫폼네트워크이다.디앱은 이러한 이더리움 플랫폼 상에서스마트 계약을 이용하여 쉽고 빠르게 토큰을 발행할 수 있다. ERC-20 기준을 맞춰 디앱을 설계한 후 토큰을 발행하면, 이더리움과 쉽게 교환할 수 있고, 표준 이더리움 지갑(My Ether Wallet, Meta Mask, Mist 등)에 자유롭게 전송할 수 있게 된다. 결국 이더리움 블록체인을 활용하는 토큰의 경우 ERC-20 기준을 맞춰야 한다. ERC-20 기반 토큰들은 동일한 이더리움 지갑으로 전송이 가능하다."
Q. GAS와 GWEI는 무엇인가?
이들은 코인전송 또는 스마트계약관련 처리를 위해 필요한 수수료를 의미하며,
1ETH = 10^9 GWEI 입니다.
GAS라는 단위를 추가로 사용하는 이유는 스마트계약의 복잡도와 현재네트워크 혼잡도를 분리하기 위해서 입니다.
즉, 간단한 스마트계약 처리는 100GAS, 복잡한 스마트계약 처리에 1000GAS가 든다고 하면, 이는 스마트계약의 복잡도로서 네트워크 혼잡도와 분리하여 비교할 수 있고,네트워크 혼잡도는 1GAS당 몇 GWEI인가로 나타낼 수 있습니다. 예를 들어 네트워크가 혼잡하지 않은 경우 1GAS당 10GWEI라면, 혼잡한 경우는 1GAS당 100GWEI가 되는 식이며, 사용자가 빠른 처리를 위해 1GAS당 GWEI를 올릴수도 있습니다.
실제 수수료는 GAS와 GWEI의 곱으로 계산되며, 예를 들면 다음과 같습니다.
(현재 이더리움 네트워크에서 표준적인(가장 간단한 형태의) 트랜잭션은 대략 21,000 가스를 소비합니다. 표준적인 트랜잭션에 대해 네트워크가 평균적으로 혼잡할 때(가스 가격이 50 gwei인 경우)의 트랜잭션 비용은 21,000 가스 * 50 gwei/가스 = 1,050,000 gwei, 혹은 0.00105 ETH라고 할 수 있습니다. 23년 5월 기준 대략 2,500원)