이더 리움-퀵 가이드
비트 코인의 엄청난 성공은 여러 사람들이 자신의 통화를 만드는 데 관심을 불러 일으켰습니다. 디지털 통화 인 비트 코인이 제공하는 이점을 살펴보면 사람들은 자체 애플리케이션에서 블록 체인 개념을 사용하기를 원했습니다. 사람들은 물리적 계약에서 부인, 투명성, 보안 등과 같은 여러 문제가 자동으로 해결되는 스마트 디지털 계약으로 이동하기를 원했습니다. 이러한 노력의 결과로 스마트 계약을 지원하는 분산 형 블록 체인 애플리케이션을 만드는 데 널리 사용되는 플랫폼 인 Ethereum이 탄생했습니다.
이 튜토리얼에서는 Ethereum 플랫폼에서 분산 애플리케이션 (DAPP)을 만드는 방법을 배웁니다. 더 구체적으로, 계약을 작성하고 로컬 블록 체인에서 테스트하고 마지막으로 심층 테스트 및 상업적 사용을 위해 외부 블록 체인에 배포하는 방법을 배우게됩니다. 당신은 사용할 것입니다Solidity, 계약 개발을위한 객체 지향 언어. 당신은 또한 사용할 것입니다Remix, 계약 개발 및 테스트를위한 오픈 소스 IDE입니다. 테스트 된 계약을 외부 블록 체인에 배포하려면 다음을 사용합니다.Ganache. 계약과 상호 작용하려면 클라이언트 응용 프로그램이 필요합니다. 우리는 사용할 것입니다MyEtherWallet각 클라이언트에 대한 지갑을 생성합니다. 계약 작성자가 계약을 게시합니다. 다른 클라이언트는 계약에서 제공하는 인터페이스를 사용하여 연락처 값을보고 계약의 일부를 실행하기 위해 생성자에게 돈을 보냅니다.
계약서 작성부터 시작하겠습니다.
계약을 개발하고 테스트하는 데 사용할 수있는 여러 도구가 있습니다. 가장 간단한 도구 중 하나는 공식 이더 리움 사이트 자체에서 제공됩니다. 이 도구는Remix, 우리는 계약 개발에 이것을 사용할 것입니다.
계약 개발을위한 리믹스
브라우저에 다음 URL을 입력하여 Remix IDE를 엽니 다.
https://remix.ethereum.org다음 화면이 나타납니다.
가운데 창에 샘플 Solidity 코드 인 기본 코드가 표시됩니다. 이 코드 편집기에서 계약 코드를 입력합니다. 코드가 자동 컴파일 될 수 있습니다. 코드를 성공적으로 컴파일하면 동일한 IDE에서 코드를 실행할 수 있습니다. 계약 메소드를 실행하면 동일한 IDE 창에 결과가 표시됩니다. 코드를 디버그하고 프로젝트를 단위 테스트하는 기능이 있습니다. 아래의 IDE 스크린 샷과 같이 오른쪽 상단의 메뉴 모음에서 볼 수 있습니다. 곧 이러한 옵션을 사용하게됩니다.
이제 계약서 작성을 시작합니다.
Solidity는 계약서 작성을 위해 특별히 개발 된 객체 지향 언어입니다. C ++, Python 및 JavaScript의 특성을 상속하는 고급 언어입니다. Solidity 컴파일러는 소스 코드를 Ethereum Virtual Machine (EVM)에서 실행되는 바이트 코드로 컴파일합니다.
Solidity 구문을 빠르게 이해하려면 IDE의 샘플 코드를 참조하십시오.
pragma solidity >=0.4.22 <0.6.0;
contract Ballot {
첫 번째 줄은 컴파일러에 대한 지시문입니다. 두 번째 줄은 계약 정의를 시작합니다. 계약 내에서 다음과 같은 변수를 선언합니다.
address chairperson;
다음과 같은 구조를 정의 할 수도 있습니다. Proposal이러한 구조 항목의 배열을 만듭니다. 코드 창에서 이것을 조사하십시오.
그런 다음 계약을 인스턴스화 할 때 호출되는 생성자를 정의 할 수 있습니다.
constructor(uint8 _numProposals) public {
생성자 뒤에는 계약 메서드 인 여러 메서드를 정의합니다. 샘플 계약에서giveRightToVote 다음 구문을 갖는 그러한 방법 중 하나입니다.
function giveRightToVote(address toVoter) public {
그만큼 public 키워드는 계약에 액세스 할 수있는 모든 클라이언트가이 메소드를 공개적으로 호출 할 수 있도록합니다.
마찬가지로 샘플 계약은 delegate, vote, 및 winningProposal. Solidity 구문에 대한 자신의 이해를 위해 이것들을 조사하십시오. 이것은 자신의 계약서를 작성하기위한 전제 조건입니다. Solidity의 전체 구문을 설명하는 것은이 튜토리얼의 범위를 벗어납니다.
우리는 계약의 이름을 지정할 것입니다 MyContract 다음 선언에서와 같이-
contract MyContract {
다음과 같이 두 개의 변수를 선언합니다.
uint amount;
uint value;
변수 amount계약 집행자가 계약 작성자에게 보낸 누적 금액을 보유합니다. 그만큼value필드는 계약 값을 보유합니다. 집행자가 계약을 실행함에 따라value 균형 잡힌 계약 가치를 반영하도록 필드가 수정됩니다.
계약 생성자에서이 두 변수의 값을 설정합니다.
constructor (uint initialAmount, uint initialValue) public {
amount = 0;
value = 1000;
}
처음에 계약에 수금 된 금액은 0이므로 amount 필드를 0으로 설정합니다. 계약을 value 임의의 숫자로,이 경우 1000입니다. 계약 작성자가이 값을 결정합니다.
주어진 시점에서 수집 된 금액을 조사하기 위해 우리는 getAmount 다음과 같이 정의-
function getAmount() public view returns(uint) {
return amount;
}
주어진 시점에서 균형 잡힌 계약 가치를 얻기 위해 getBalance 다음과 같이 방법-
function getBalance() public view returns(uint) {
return value;
}
마지막으로 계약 방법을 작성합니다. (Send). 그것은 클라이언트가 계약 생성자에게 약간의 돈을 보낼 수있게합니다-
function send(uint newDeposit) public {
value = value - newDeposit;
amount = amount + newDeposit;
}
의 실행 send 방법은 둘 다 수정합니다 value 과 amount 계약의 분야.
전체 계약 코드는 다음과 같습니다.
contract MyContract {
uint amount;
uint value;
constructor (uint initialAmount, uint initialValue) public {
amount = 0;
value = 1000;
}
function getBalance() public view returns(uint) {
return value;
}
function getAmount() public view returns(uint) {
return amount;
}
function send(uint newDeposit) public {
value = value - newDeposit;
amount = amount + newDeposit;
}
}
완전한 계약 코드를 작성하면이 IDE에서 컴파일하는 것은 간단합니다. 간단히Autocompile 아래 스크린 샷과 같이 IDE의 확인란-
또는 제목이있는 버튼을 클릭하여 계약을 작성할 수 있습니다. “Start to compile”.
오타가 있으면 코드 창에서 수정하십시오. 코드가 오류없이 완전히 컴파일되었는지 확인하십시오. 이제 계약을 배포 할 준비가되었습니다.
이 장에서는 Ethereum에 계약을 배포하는 방법을 배웁니다. 실행 메뉴 옵션을 클릭하여 계약을 배포하십시오. 다음 화면이 나타납니다.
계약 이름은 강조 표시된 목록 상자에 표시됩니다. 이 아래에서Deploy버튼을 클릭하여 계약을 배포합니다. 계약은 Remix 빌트인 블록 체인에 배포됩니다. 화면 하단에서 배포 된 계약을 볼 수 있습니다. 아래 스크린 샷의 강조 표시된 부분에서 확인할 수 있습니다.
이 강조 표시된 영역에는 세 가지 메서드 이름이 있습니다. 다음으로 계약 메서드를 실행하여 계약과 상호 작용합니다.
배포 된 계약을 클릭하면 계약에서 제공하는 다양한 공개 방법을 볼 수 있습니다. 아래 스크린 샷에 나와 있습니다.
첫 번째 방법 send그 앞에 편집 상자가 있습니다. 여기에서 계약 방법에 필요한 매개 변수를 입력합니다. 다른 두 가지 방법은 매개 변수를 사용하지 않습니다.
송금
이제 100과 같은 금액을 send계약 창에 표시되는 기능. 클릭send단추. 이것은 계약을 실행합니다send 방법, 계약 가치 감소 value 필드 및 값 증가 amount 들.
계약 가치 검토
이전 send money 조치로 인해 계약 값이 100 감소했습니다. 이제 다음을 호출하여이를 검사 할 수 있습니다. getBalance계약 방법. 클릭하면 출력이 표시됩니다.getBalance 아래 스크린 샷과 같이 버튼-
계약 value 이제 900으로 줄었습니다.
징수 금액 검토
이 섹션에서는이 계약에서 지금까지 모은 금액을 살펴 보겠습니다. 이를 위해getAmount단추. 다음 화면이 나타납니다.
그만큼 amount 필드 값이 0에서 100으로 변경되었습니다.
몇 가지 시도 send 운영 및 계약 검토 value 그리고 amount 배치 된 계약이 예상대로 실행되고 있다는 결론을 내릴 수 있습니다.
지금까지 사용한 Remix IDE는 계약의 개발 및 초기 테스트에 충분합니다. 실제 계약의 경우 다양한 매개 변수에 대해 기능을 테스트해야합니다. Remix는 실제 (비 테스트) 사용자 계정을 생성하여 자금을 이체 할 수 없습니다. Remix에서 생성 한 블록 체인의 구성을 제어 할 수 없습니다. 트랜잭션 실행을 모니터링 할 수도 없습니다.
Remix는 몇 가지 고급 작업에서 누락되었습니다. 따라서 우리는 이러한 모든 기능을 제공하는보다 정교한 블록 체인에 계약을 배포해야합니다. 그러한 블록 체인 중 하나는Ganache 다음 장에서 배울 것입니다.
Ganache는 Solidity 계약을 테스트하기 위해 개인 이더 리움 블록 체인을 설정하는 데 사용됩니다. Remix에 비해 더 많은 기능을 제공합니다. Ganache와 함께 운동 할 때 기능에 대해 배웁니다. Ganache 사용을 시작하기 전에 먼저 로컬 머신에 Blockchain을 다운로드하여 설치해야합니다.
Ganache 다운로드
다음 URL에서 Ganache를 다운로드 할 수 있습니다.
https://truffleframework.com/ganacheGanache는 여러 플랫폼에서 사용할 수 있습니다. 이 튜토리얼 전체를 Mac에서 개발하고 테스트했습니다. 따라서 아래 스크린 샷은 Mac 설치를 보여줍니다. 위에 제공된 설치 URL을 열면 컴퓨터의 OS를 자동으로 감지하고 적절한 바이너리 설치로 안내합니다. 아래 스크린 샷은 Mac 설치를 보여줍니다.
DOWNLOAD 버튼을 클릭하면 Mac 설치용 DMG 파일 다운로드가 시작됩니다.
Ganache 설치
다운로드 폴더에서 "Ganache-2.0.0.dmg"를 찾아 더블 클릭하여 Ganache를 설치합니다. 성공적으로 설치되면 다음 화면이 나타납니다.
Ganache 아이콘을 응용 프로그램 폴더로 끕니다. 이제 Ganache를 Mac에서 응용 프로그램으로 사용할 수 있습니다.
다른 OS를 사용하는 경우 성공적인 설치를 위해 제공된 지침을 따르십시오.
Ganache 시작
이제 찾아 Ganache 응용 프로그램 폴더에서 아이콘을 두 번 클릭하여 Ganache를 시작합니다.
Ganache 데스크탑
Ganache가 시작되면 Ganache 화면이 아래와 같이 나타납니다.
Ganache를 시작하려면 QUICKSTART를 클릭하십시오. 아래와 같이 Ganache 콘솔이 표시됩니다.
위 스크린 샷의 콘솔은 100 ETH (이더-이더 리움 플랫폼에서 거래를위한 통화)의 잔액을 가진 두 개의 사용자 계정을 보여줍니다. 또한 각 계정에 대한 거래 수가 0으로 표시됩니다. 사용자가 지금까지 트랜잭션을 수행하지 않았기 때문에이 수는 분명히 0입니다.
이제 우리와 직접적인 관련이있는 Ganache의 몇 가지 중요한 화면에 대한 개요를 살펴 보겠습니다.
아래 스크린 샷과 같이 화면 오른쪽 상단의 설정 아이콘을 클릭합니다.
서버 설정 화면이 아래와 같이 나타납니다.
여기에서 Ganache 서버의 서버 주소 값과 포트 번호를 설정할 수 있습니다. 당분간 기본값으로 두십시오. 네트워크 ID는 Ganache 서버의 내부 블록 체인 식별자입니다. 기본값으로 두십시오. 그만큼Automine버튼은 거래가 즉시 처리됨을 나타내는 ON 상태입니다. 이 기능을 끄면 블록을 채굴 할 시간 (초)을 입력하라는 메시지가 표시됩니다.
계정 및 키
클릭하면 Accounts & Keys 메뉴 옵션을 선택하면 다음 화면이 표시됩니다.
여기에서 할 수 있습니다 set각 계정의 기본 잔액. 기본값은 100입니다. 이제 데스크탑 스크린 샷에서 각 계정에 대해 100 ETH가 표시된 이유를 설명합니다. 이 화면에서 계정 수를 설정할 수도 있습니다. 이 스크린 샷에 표시된 값은 2이므로 데스크톱에 두 개의 계정 만 표시됩니다.
이제 두 가지 설정 화면을 살펴 보겠습니다. 이 두 가지가 어떻게 작동하는지에 대한 지식으로 충분합니다. 클릭하여 서버를 다시 시작하십시오.RESTART화면 오른쪽에있는 버튼을 클릭합니다. 이제 데스크탑 화면으로 돌아갑니다. 위의 두 필드에 다른 값을 입력하고 서버를 다시 시작하여 효과를 확인하십시오.
이제 Ganache 데스크톱에서 사용할 수있는 기능을 간략하게 이해하겠습니다. 데스크탑의 상단에는 몇 가지 메뉴 옵션이 있으며 그중 일부는 우리와 직접적인 관련이 있습니다. 메뉴 모음은 아래 스크린 샷에서 강조 표시됩니다.
클릭 TRANSACTIONS메뉴는 지금까지 수행 된 모든 거래를 보여줍니다. 곧 거래를 수행 할 것입니다. 이제 위 화면으로 돌아와 수시로 거래를 확인하십시오. 일반적인 거래 화면은 다음과 같습니다.
마찬가지로, 클릭하면 BLOCKS메뉴에서 다양한 채굴 블록을 볼 수 있습니다. BLOCKS 메뉴가 어떻게 보이는지 이해하려면 다음 스크린 샷을 고려하십시오.
클릭 LOGS메뉴. 시스템 로그가 열립니다. 여기에서 이더 리움 블록 체인에서 수행 한 다양한 작업을 확인할 수 있습니다.
이제 개인 이더 리움 블록 체인을 설정하기 위해 Ganache를 사용하는 방법을 이해 했으므로 이제이 블록 체인을 사용할 몇 명의 클라이언트를 만들 것입니다.
클라이언트 응용 프로그램의 경우 MyEtherWallet.
다운로드 MyEtherWallet 다음 URL에서 소프트웨어-
https://github.com/kvhnuke/etherwallet/releases/tag/v3.21.06
필요한 경우 다운로드 한 파일의 압축을 풀고 index.html. 새 지갑을 생성하기위한 다음 인터페이스가 표시됩니다.
이 장에서는 이더 리움 지갑을 만드는 방법을 배웁니다. 새 지갑을 생성하려면 원하는 비밀번호를 입력 한 다음“Create New Wallet”버튼. 그렇게하면 지갑이 생성됩니다. 디지털 지갑은 기본적으로 안전한 장소에 저장해야하는 공개 / 개인 키 쌍의 생성입니다. 지갑 생성 결과 다음 화면이 나타납니다.
클릭 “Download Keystore File (UTC / JSON)”버튼을 눌러 생성 된 키를 저장합니다. 이제“I understand. Continue”단추. 아래 스크린 샷과 같이 개인 키가 화면에 나타납니다.
클릭 “Print Paper Wallet”버튼을 눌러 지갑의 개인 키에 대한 물리적 기록을 유지합니다. 나중에 지갑 잠금을 해제 할 때 필요합니다. 다음 화면이 표시됩니다. 이 출력을 잃지 마십시오.
지갑을 잠금 해제하려면 “Save Your Address”단추. 다음 화면이 표시됩니다.
지갑은 위 화면에서 강조 표시된 개인 키 옵션을 사용하여 잠금 해제 할 수 있습니다. 이전 스크린 샷에서 개인 키를 잘라내어 붙여넣고 잠금 해제 버튼을 클릭합니다. 지갑이 잠금 해제되고 화면 하단에 메시지가 표시됩니다. 현재 지갑에는 아무것도 포함되어 있지 않기 때문에 지갑 잠금을 해제하는 것은이 시점에서 실제로 유용하지 않습니다.
이제 지갑을 만들었습니다. 이 지갑은 블록 체인에 대한 클라이언트 인터페이스입니다. 이전 강의에서 시작한 Ganache 블록 체인에 지갑을 첨부합니다. 그렇게하려면Network 아래 스크린 샷과 같이 드롭 다운 상자-
목록 맨 아래로 이동하십시오. 다음에 대한 옵션이 표시됩니다.“Add Custom Network / Node”. 이 항목을 선택하십시오.
이제 Ganache 서버 주소와 수신하는 포트를 묻는 화면이 나타납니다.
Ganache 서버 세부 정보 입력 – http://127.0.0.1 및 포트 : 8545. 이는 Ganache 서버 설정에서 사용자가 설정 한 값입니다. 줘name이 노드에 대한 선택. 클릭“Save & Use Custom Node”단추. 화면 하단에 연결된 메시지가 표시됩니다. 이 시점에서 지갑이 Ganache 블록 체인에 성공적으로 연결됩니다.
이제이 연결된 블록 체인에 계약을 배포 할 준비가되었습니다.
계약을 배포하려면 Contracts 아래 스크린 샷과 같이 메뉴 옵션-
이 화면에서 계약의 바이트 코드를 입력해야합니다. Solidity 계약 코드를 컴파일 할 때 EVM에서 실행되는 바이트 코드가 생성되었음을 기억하십시오. 이제이 바이트 코드를Remix IDE.
Remix IDE 화면으로 이동하면 이전에 입력 한 계약이 코드 창에 있어야합니다. 그렇지 않은 경우 코드 창에 계약을 다시 입력하십시오. 다음 스크린 샷과 같이 Bytecode 버튼을 클릭합니다.
컴파일 된 소스의 바이트 코드는 다른 정보와 함께 클립 보드에 복사됩니다. 복사 한 코드를 원하는 텍스트 편집기에 붙여 넣습니다. 다음은 텍스트 편집기의 스크린 샷입니다.
가치 object태그는 원하는 바이트 코드를 포함합니다. 묶는 따옴표를 복사하지 않도록주의하여 복사하십시오. 바이트 코드는 정말 길기 때문에 마지막 바이트까지 복사해야합니다. 이제이 바이트 코드를Deploy Contract 아래와 같이 화면-
그만큼 Gas Limit 필드가 자동으로 설정됩니다.
Gas Limit 필드 아래에서 지갑에 액세스하기위한 선택 사항을 찾을 수 있습니다.
이제 다음을 사용하여 지갑에 액세스하십시오. Private Key이 계약이 배포 될 Ganache 계정의 이 개인 키를 얻으려면Ganache창문. 클릭keys 아래 그림과 같이 첫 번째 계정의 아이콘-
아래 스크린 샷과 같이 사용자 계정 # 1의 개인 키가 표시됩니다.
이 개인 키를 복사하여 아래와 같이“Paste Your Private Key”섹션에 붙여 넣으십시오.
당신은 볼 것입니다 “Unlock”화면 하단의 버튼을 클릭합니다. 잠금을 해제하면 화면 하단에 "성공"메시지가 나타납니다. 이 시점에서 지갑은 Ganache 블록 체인의 계정 # 1에 연결됩니다.
이제 계약서에 서명하고 배포 할 준비가되었습니다. 클릭“Sign Transaction” 아래 스크린 샷과 같이 버튼-
트랜잭션에 서명하면 둘 다 생성되고 표시됩니다. Raw 과 Signed업무. 클릭“Deploy Contract”버튼을 클릭하여 Ganache 블록 체인에 계약을 배포합니다. 계약은 Ganache 블록 체인의 계정 # 1 사용자에 의해 배포됩니다. 따라서 계정 # 1 사용자가 계약 작성자가됩니다. 계약이 배포되기 전에 공개 실제 이더 리움 블록 체인에이 계약을 배포하는 경우 실제 비용이들 수 있으므로 거래를 확인하라는 메시지가 표시됩니다. 걱정하지 마십시오. 로컬 머신에서 실행되는 현재 프라이빗 블록 체인에는 실제 돈이 필요하지 않습니다. 클릭Make transaction 아래 스크린 샷과 같이 버튼-
Ganache 콘솔을 살펴보십시오. 아래 스크린 샷에서 볼 수 있듯이 계정 # 1의 ETH 잔액이 감소한 것을 볼 수 있습니다.
이제 TRANSACTIONS 아래 스크린 샷과 같이 메뉴-
거래 내역이 표시됩니다.
이 화면에서 계약서의 게시 된 주소를 찾을 수 있습니다. 주소는 위 스크린 샷에 표시되어 있습니다. 귀하는이 주소를 공개적으로 배포하여 계약 작성자 인 귀하에게 송금하는 것과 같은 계약 방법을 연결하고 실행할 수있는이 지정된 주소에서 귀하의 계약을 사용할 수 있음을 다른 사람에게 알립니다. 다음 단계에서 필요하므로 참조 용으로이 계약 주소를 복사하십시오.
이제 배포 한 계약과 상호 작용할 준비가되었습니다. MyEtherWallet 데스크탑으로 돌아가서 아래 스크린 샷과 같이“Interact with Contract”탭을 클릭하십시오.
이전에 복사 한 계약 주소를 “Contract Address”들. 또한 붙여 넣어야합니다“ABI / JSON Interface” 위 화면에서 계약의.
얻기 위해 ABI,로 이동 Remix 창을 클릭하고 ABI 아래 스크린 샷과 같이 버튼을 누릅니다.
ABI / JSON 인터페이스가 클립 보드에 복사됩니다. 즐겨 찾는 편집기에 붙여 넣어 생성 된 인터페이스를 확인하십시오.
ABI / JSON Interface
[
{
"constant": false,
"inputs": [
{
"name": "newDeposit",
"type": "uint256"
}
],
"name": "send",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"name": "initialAmount",
"type": "uint256"
},
{
"name": "initialValue",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"constant": true,
"inputs": [],
"name": "getAmount",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getBalance",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
]
이 JSON을 MyEtherWallet 인터페이스를 사용하면 아래와 같이 JSON 인터페이스 아래의 ACCESS 버튼이 활성화되었음을 알 수 있습니다.
딸깍 하는 소리 Access 버튼을 눌러 계약에 액세스하십시오.
클릭하면 Access버튼을 누르면 계약 주소와 기능 선택 드롭 다운이 Remix 편집기에서와 같이 화면에 나타납니다. 이것은 아래 스크린 샷에 나와 있습니다.
Remix 배포의 경우와 같이 계약의 다양한 기능을 확인할 수 있습니다. 이제 연락처가 외부 Ganache 블록 체인에 배포됩니다. 을 체크하다getAmount함수; Amount 값이 0이고getBalance 1000의 잔액이 표시됩니다.
이제 송금 해보세요. 그것은 당신에게textedit금액 입력 제어. 계약서를 작성할 때 일부 "가스"가 사용되며 블록 체인에 작성하기 전에 거래를 확인하라는 메시지가 표시됩니다. Ganache 서버에서 설정 한 채굴 타이밍에 따라 짧은 시간 내에 트랜잭션이 실행됩니다. 그 후, 당신은 재검토 할 수 있습니다value 그리고 amount 계약서의 필드가 실제로 수정되었는지 확인합니다.
이제 Ganache 데스크톱을 검사하여 지금까지 수행 한 트랜잭션을 볼 수 있습니다. 샘플 출력은 다음과 같습니다.
지금까지 당신은 계약 작성자이자 계약 집행자였습니다. 다른 사람들이 귀하의 계약을 사용하기를 기대하기 때문에 이것은 의미가 없습니다. 이를 위해 Ganache 블록 체인을위한 또 다른 클라이언트를 생성하고 새로 생성 된 계정 # 2에서 계정 # 1의 계약 생성자에게 돈을 보냅니다.
이 장에서는 Ethereum에서 계약 사용자 생성에 대해 배웁니다. 게시 된 계약에 대한 사용자를 생성하기 위해MyEtherWallet이전 단계에서 사용한 것과 동일한 Ganache 블록 체인에 연결된 클라이언트. 다음으로 이동MyEtherWallet 화면에서 새 지갑을 만듭니다.
클릭 contracts 메뉴를 선택하고 “Interact with Contract”이전 경우와 같이 옵션. 이 새로운 사용자는 이미 게시 된 계약과 상호 작용하고 자신의 계약을 배포하지 않습니다. 이전 사례에서 사용한 계약 주소와 ABI를 지정합니다.
이제 Access 버튼 및 호출 send 방법. 요청을 받으면 보낼 100 ETH라는 값을 입력하십시오. 거래를 제출하십시오. 제출하면 다음과 같은 화면이 나타납니다.
이 새 클라이언트를 Ganache 블록 체인에 연결하려면 Ganache 콘솔로 이동하십시오. 다음 스크린 샷과 같이 계정 # 2의 키 아이콘을 클릭합니다.
계정 # 2의 개인 키를 받게됩니다.
받은 키를 복사하여 여기에 표시된대로 새로 생성 된 지갑에서 사용합니다.
클릭 Unlock 버튼을 눌러 지갑을 부착합니다.
지갑이 성공적으로 잠금 해제되면 원하는 전송 트랜잭션을 작성하십시오.
클릭하여 트랜잭션을 생성하십시오. “Generate Transaction” 단추.
Make거래를하고 블록 체인에 반영 될 때까지 잠시 기다립니다. 이제 실행“getAmount”, 표시된 금액은 이제 200이어야합니다.
실행 “getBalance”. 그만큼value 필드는 이제 800이어야합니다.
트랜잭션 로그를 검사하여 다른 사용자가 수행 한 다양한 트랜잭션을 확인합니다.
Solidity에서 자신의 디지털 계약을 작성하는 방법을 배웠습니다. Remix IDE에서 계약 인터페이스를 개발하고 테스트했습니다. 추가 다중 사용자 테스트를 위해 Ganache Blockchain에이 계약을 배포했습니다. Ganache에서 두 개의 사용자 계정을 만들었습니다. 첫 번째 계정은 계약 게시에 사용되었습니다. 두 번째 계정은 계약 소비에 사용되었습니다.
다음은 무엇입니까?
이 전체 프로세스에서 사용한 Ganache 블록 체인은 개인용이며 컴퓨터에 로컬입니다. 계약의 기능에 완전히 만족하면 실제 이더 리움 블록 체인에 게시 할 수 있습니다. 그러나 그렇게하려면 실제 돈을 써야합니다. 데모 애플리케이션에서는 Ganache의 각 사용자 계정에 대해 1000 ETH를 기본값으로 사용했습니다. 실제 블록 체인에 계약을 배포 할 때 자국의 통화를 ETH로 변환하여 ETH를 구매해야합니다. 이 통화는 지갑에 저장되며 원하는 방식으로 사용할 수 있습니다.