전용 이더리움 테스트 네트워크 설정

나는 최종 버전이 준비되기 전에 진짜 금과 은을 쓰지 않는 이더리움 스마트 계약을 하고 싶다.고맙게도 이더리움의 디자인은 새로운 네트워크, 특히 메인 네트워크와 연결되지 않은 개인 네트워크를 쉽게 설치할 수 있게 했다.나는 이곳에서 나 자신뿐만 아니라 이더리움 스마트 계약의 쉬운 안전 방식을 찾는 모든 사람들을 위해 첫걸음을 설명할 것이다.
참고: Ganache과 같은 개인 이더리움 네트워크를 설정하려면 누르십시오.나는 이런 것들을 토론할 생각은 없다. 왜냐하면 나는 좀 깊이 파고들고 싶기 때문이다.

뭐 공부 해요?


GETH 회사


Geth은 Go 이더리움을 대표하고 Go가 작성한 전체 노드 이더리움 프로토콜로 이루어진다.그것은 세 가지 원시 실현 중의 하나이다(C++와 Python과 함께).Geth는 이른바'genesis 파일'에서 테스트 네트워크를 설정할 수 있도록 합니다.우선, 우리는 그것을 설치합시다.나 같은 macOS 사용자는 자체 제작 소프트웨어를 통해 편리하게 설치할 수 있다.
brew install geth
Geth를 설치한 후 genesis 파일을 설정해야 합니다.

Genesis 파일


genesis 파일은 JSON 프로필입니다. Geth는 이 파일을 사용하여 genesis block을 만듭니다.이 블록의 목적은 게임 규칙을 정의하는 것이다. 보기에 매우 비슷하다. (감사합니다, pyethapp):
{
  "nonce": "0x0000000000000042",
  "difficulty": "0x200",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "timestamp": "0x00",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa",
  "gasLimit": "0x1388",
  "alloc": {
    "3282791d6fd713f1e94f4bfd565eaa78b3a0599d": {
      "balance": "1337000000000000000000"
    },
    "17961d633bcf20a7b029a7d94b7df4da2ec5427f": {
      "balance": "229427000000000000000"
    }
  }
}
이것은 시작 값 difficultygas limit과 같은 매우 중요한 기본값을 설정했다.PoW의 의미에서 어려움은 모든 다음 산열의 엔트로피를 결정하거나 더 간단하게 말하면 얼마나 많은 계산 능력이 있어야 다음 블록을 풀고 mixhashnonce의 조합을 추측할 수 있다.우리는 그것이 우리의 테스트 네트워크에서 충분히 낮기를 바란다. 이렇게 하면 우리는 노트북만 사용하여 그것을 기다리거나 녹일 필요가 없다.
다른 한편, 우리는 gas limit의 높이가 충분하기를 바란다. 이렇게 하면 우리는 임의의 복잡한 조작을 허용할 수 있고, 우리의 네트워크 폼 캡처를 다시 초기화할 필요가 없다.그러나 스마트 계약을 사용하기 전에 운영에 쓰이는 천연가스 금액에 관심을 가져야 한다. 메인 네트워크에서는 진정한 돈을 의미하기 때문이다.alloc 대상은 선택할 수 있지만, 초기 수량의 지갑을 설정할 수 있으며, 지갑마다 잔액이 있습니다.하지만 나중에 Mist에서 지갑을 쉽게 만들 수 있기 때문에 이 점을 아끼고 싶을 수도 있습니다.
나머지 값은 거의 0이거나 너무 신경 쓰지 않아도 되는 무작위 산열을 시작한다.이런 견본을 복제해서 난이도와 기체 제한을 조정하고 거기서부터 시작하세요.만약 네가 이 속성들의 의미를 더욱 깊이 있게 해석하고 싶다면, 나는 this answer here이 매우 투철하다는 것을 발견했다.

엷은 안개



Mist은 그래픽 사용자 인터페이스 이더리움 Dapp 브라우저로 자신의 통합 Geth 노드와 통합된 ETH 지갑 관리자를 포함한다.지금까지 ETH 지갑만 사용했다면 Dapp 브라우저의 개념은 처음에는 뒷걸음질칠 것 같았다.지갑 관리 외에도 Mist는 사실상 Dapp 상점의 기능을 가지고 있으며, 사용자가 이미 개발한 Dapp, 예를 들어 CryptoKitties, Augur, Bancor 등을 발견하고 사용할 수 있도록 한다. 가장 중요한 것은 Mist는 스마트 계약에서 기능을 창설, 배치, 집행할 수 있도록 허용한다.이것은 주로 우리가 그것을 사용할 목적이다.

네트워크 초기화


우선, 우리는 우리의 네트워크를 초기화할 것이다.다음과 같은 초기 폴더 구조가 필요합니다.
mytestnet/
- chaindata/
- genesis.json
물론 디렉터리와 프로필을 어떻게 명명하는지는 전적으로 당신에게 달려 있습니다.중요한 것은 블록 체인에 저장된 폴더와genesis 파일을 분리하는 것이다.이 점을 기억하고 mytestnet 디렉터리에 들어가 다음 명령을 실행합니다.
geth --datadir=.chaindata init genesis.json
Geth는 블록체인을 초기화하고 자신을 닫습니다.체인을 초기화하면 Geth 인스턴스를 시작하여 실행할 수 있습니다.
geth --datadir=.chaindata
Geth는 서버를 연결하고 실행합니다.주의해야 할 것은 연결 프로세스의 마지막 줄입니다. 다음과 같습니다.
INFO [07-29|09:53:20.327] IPC endpoint opened   url=/path/to/my/testnet/.chaindata/geth.ipc
다음 단계에서는 .ipc 파일을 사용하여 Mist에 연결합니다.

안개가 끼기 시작하다


안개에 대해 주의해야 할 점.이것은 자신의 Geth 버전을 포함하고 있으며, 만약 기계에서 다른 버전을 실행하지 않는다면, 자동으로 시작됩니다.이로 인해 Mist가 메인 네트워크에 연결하고 진정한 이더리움 블록체인의 사본을 다운로드하기 시작할 수 있습니다.우리는 이런 상황을 방지하기를 바란다.반대로 명령줄에서 Mist를 시작하고 Geth 인스턴스가 열려 있는 .ipc 파일을 가리킵니다.
/Applications/Mist.app/Contents/MacOS/Mist --rpc /path/to/my/testnet/.chaindata/geth.ipc
약간의 설정 후에 Mist가 시작됩니다.이전에 genesis 파일에 ETH를 할당했는지 여부와 상관없이 이 주소에 접근할 수 없습니다.너는 새로운 지갑과 나의 전자 지갑을 만들어야 할 것이다.

일단 당신의 첫 번째 지갑이 설치되면, 왜 당신은 나의 ETH가 아닌 것입니까?difficulty의 값을 충분한 낮은 수준으로 유지한다고 가정하면 이것은 상당히 빠르고 간단한 과정일 것이다.다음 그림과 같이 새 탭을 열고 두 번째 Geth 인스턴스를 시작합니다.
geth attach /path/to/my/testnet/.chaindata/geth.ipc
콘솔이 시작되며 다음 명령 세트를 작성할 수 있습니다.
miner.setEtherbase("the_address_of_your_wallet");

miner.start(1); // # of parallel threads.
// To stop the miner, type miner.stop()
잠시 후, 얇은 안개가 지갑에 나타나는 ETH 수가 계속 증가하기 시작할 것입니다.
연습으로 일부 ETH를 Mist를 통해 만든 다른 지갑으로 보냅니다.거래를 확인하기 위해서, 모든 확인을 마칠 때까지 마이너를 빨리 시작하고 실행해야 합니다.일반적으로 Mist는 이 점을 실시간으로 표시하기 위해 충분한 응답 능력을 갖추어야 한다.그러나 때때로 Mist는 응답을 잃거나 플러그인과 연결을 잃을 수 있습니다.만약 이런 상황이 발생한다면, 그것을 다시 시작하기만 하면, 그것은 다시 운행할 것이다.
지금 이대로.다음 게시물에서 나는 우리의 새로운 개인 테스트 네트워크에서 간단한 스마트 계약을 창설하고 배치하는 것을 토론할 것이다.기대해주세요.
이 게시물은 처음에 on my blog에 나타났다.

좋은 웹페이지 즐겨찾기