두 번째 단계

    이 섹션에서는 개발 경험을 가능한 한 쉽게 만들어주는 몇 가지 강력한 도구를 소개합니다. Truffle이라는 개발 환경을 설치하고, Solidity를 탐색하고, 스마트 계약의 기본 사항을 다루고 (우리가 직접 만들 수도 있습니다!) 로컬 시스템에서 자체 노드를 시작합니다. 로컬에 성공적으로 배포 한 후에는 Remix를 사용하여 계약과 상호 작용하고 개발 프로세스를 더 깊이 파고들 것입니다.!

    Truffle에 익숙해지기

    트뤼플

    Truffle은 Ethereum Virtual Machine을 사용하여 연결하고 테스트 할 수있는 우수한 개발 환경입니다. Truffle은 개발을 더 쉽게하기 위해 만들어졌으며 로컬에서 발생하는 상호 작용을 통해 테스트 넷 (예 : Ropsten 또는 Rinkeby)과 메인 넷에서 배포 스트레스를 줄이는 데 도움이됩니다..

    Truffle에 대한 더 많은 문서를 보려면 여기:

    스크린 샷 2020 08 26 at 5 49 43 PM

    터미널에 Truffle을 설치하려면 다음을 실행하십시오.

    npm 트러플 설치 -g

    참고 : Windows 권장 사항

    Windows에서 Truffle을 실행하는 경우 Truffle이 제대로 실행되지 못하게하는 일부 이름 충돌이 발생할 수 있습니다. 참조하십시오 이름 충돌 해결 섹션 솔루션.

    가나슈 

    그 동안 ganache 용 CLI를 설치하겠습니다.

    가나슈에 대한 간단한 요약은 프로젝트의 기능을 빠르게 가동하고 테스트하기 위해 로컬에서 사용할 수있는 개인 블록 체인이라는 것입니다. Ganache는 개발주기 전체에서 사용할 수있는 도구입니다. dApp을 개발할 수있을뿐만 아니라 배포하고 테스트 할 수도 있습니다. 이 모든 작업은 컴퓨터에서 로컬로 발생하므로 프로젝트에서 작업하기에 가장 낮은 마찰 / 위험 환경입니다.!

    npm 사용 :

    npm install -g ganache-cli

    좋아, 트러플로 돌아가!

    Truffle이 제공하는 일부 제품 :

    • 내장 된 스마트 계약 컴파일, 연결, 배포 및 바이너리 관리.
    • 신속한 개발을위한 자동화 된 계약 테스트.
    • 스크립트 가능하고 확장 가능한 배포 & 마이그레이션 프레임 워크.
    • 모든 대중에게 배포하기위한 네트워크 관리 & 사설 네트워크.
    • EthPM을 통한 패키지 관리 & ERC190 표준을 사용하는 NPM.
    • 직접 계약 커뮤니케이션을위한 대화 형 콘솔.
    • 긴밀한 통합을 지원하는 구성 가능한 빌드 파이프 라인.
    • Truffle 환경에서 스크립트를 실행하는 외부 스크립트 실행기.

    튜토리얼을 위해 우리는 처음부터 무언가를 만들 것입니다. 그러나 Truffle이 이미 Truffle Boxes (찾음)라는 보일러 프로젝트를 확인하는 것이 좋습니다. 여기).

    이제 트러플과 가나슈를 설치 했으니 견고 함을 논의 해보자!

    견고 

    Solidity는 Ethereum Virtual Machine (EVM)에서 실행되는 스마트 계약을 구현하기위한 믿을 수 없을 정도로 인기있는 객체 지향의 고급 언어입니다. 스마트 계약은 이더 리움 상태 내에서 계정의 행동을 관리하는 프로그램입니다. Solidity의 한 줄을 본 적이 없지만 C ++ 및 / 또는 JavaScript에 익숙하다면 몇 가지 유사점 이상을 발견 할 것입니다.. 

    Solidity는 다른 기능 중에서 상속, 라이브러리 및 복잡한 사용자 정의 유형을 지원하는 정적으로 유형이 지정된 언어입니다. Solidity를 사용하면 투표, 크라우드 펀딩, 블라인드 경매와 같은 용도로 계약을 생성하여 몇 가지 사용 사례를 지정할 수 있습니다.. 

    Solidity는 EVM에서 실행 가능한 바이트 코드로 컴파일됩니다. Solidity를 통해 개발자는 스마트 계약에 구현 된 자체 시행 비즈니스 로직을 구현하는 애플리케이션을 작성할 수 있으며 트랜잭션의 부인 방지 기록을 남길 수 있습니다. 스마트 계약은 사용자가 코드를 신뢰할 수 있도록하여 잠재적 인 인간 손상이 크게 제거되는 신뢰할 수없는 환경을 만드는 데 도움이됩니다.. 

    계약을 배포 할 때 항상 사용중인 버전에주의를 기울여야합니다. 주요 변경 사항, 새로운 기능 및 버그 수정이 정기적으로 도입됩니다 (온라인 자습서를 따르는 경우 오류가 발생할 수 있으므로이를 기억하십시오. 가까운 문서). 

    트러플 프로젝트 시작 

    이제 프로젝트를 시작하고 이름을 “eth-hello-world”로 지정하겠습니다.

    터미널로 이동하여 새 빈 폴더를 만들어 보겠습니다. 

    mkdir eth-hello-world

    빈 디렉토리가 있으면 폴더로 이동하여 명령을 실행하십시오.

    트러플 초기화

    프로세스가 완료되면 생성 된 일부 파일을 볼 수 있습니다.

    스크린 샷 2020 08 26 at 7 21 53 PM

    이제 연락처, 마이그레이션, 테스트 폴더 및 트러플 구성 파일이 있습니다. 이러한 파일을 살펴보고 파일이 무엇인지 더 높은 수준에서 논의 해 보겠습니다..

    계약

    이 폴더에는 모든 스마트 계약이 포함됩니다 (이 예에서는 Solidity를 사용하여 생성합니다). 스마트 연락처에 대해 들어 본 적이 없다면 생각할 수있는 방법이 있습니다. 블록 체인에서 실행되는 코드 조각 (로컬, 테스트 또는 메인 넷일 수 있음)은이를 실행하는 모든 사람에게 동일한 결과를 보장합니다. 스마트 계약은 dApp (분산 형 애플리케이션) 내에서 사용되며 엄청난 양의 사용 사례를 가지고 있습니다. 투표, 게임, 공급망, 통화, 재무 기록 등이 있습니다.!

    이를 더 자세히 분석하기 위해 Nick Szabo가 자동 판매기의 예를 제공합니다. 정확한 양의 코인을 머신에 넣으면, 당신 (그리고 당신의 전후 모두) 똑같은 결과를 교환 할 수 있습니다. Ethereum에 구축 된 스마트 연락처의 경우도 마찬가지이며, 값을 포함하고 조건이 충족 될 때까지 (예 : 올바른 양의 코인) 검색하려는 정보를 잠금 해제하고 해제합니다..

    잠시 후에 Solidity 및 스마트 계약에 대해 다시 논의 할 것입니다. 마이그레이션으로 넘어가겠습니다.!

    마이그레이션

    마이그레이션은 계약을 Ethereum 네트워크에 배포 할 수있는 Javascript 파일입니다. 정말 흥미로운 점은 작업이 발전하고 배포가 시간이 지남에 따라 변경 될 것이라는 기본 가정이 있다는 것입니다. 업데이트 할 때 프로젝트가 진화하는 동안 새로운 마이그레이션 스크립트를 작성하게됩니다. 마이그레이션 파일에 대해 생각하는 방법은 주로 작업 준비 및 배포를 담당한다는 것입니다. 이에 대해 생각하는 간단한 방법은 마이그레이션이 관리되는 배포 스크립트 집합이라는 것입니다. 작업을 업데이트하면 이전에 실행 한 마이그레이션 로그가 기본 제공 마이그레이션 계약을 통해 체인에 기록됩니다..

    당신은 이미 마이그레이션 계약을 가지고 있습니다! 계약 디렉토리로 이동하여 열면 다음과 같은 계약이 포함 된 Migrations.sol 파일이 표시됩니다.

    스크린 샷 2020 08 27 at 4 49 03 AM

    이것은 truffle init를 실행할 때 생성되는 기본 계약입니다. Truffle은 기본적으로 마이그레이션 기능을 사용하기 위해 마이그레이션 계약이 필요하므로이를 삭제하지 마십시오.!

    참고 : 마이그레이션 기능을 활용하려면 첫 번째 마이그레이션 내에이 계약을 배포해야합니다..

    이제 마이그레이션 계약을 살펴볼 기회가 생겼으므로 마이그레이션 디렉터리로 이동하면 1_inital_migrations.js라는 파일이 표시됩니다.

    참고 :이 파일의 이름 지정 규칙을 살펴보십시오.이 파일에는 번호가 접두사이고 설명이 추가됩니다. 마이그레이션이 성공적으로 실행되었는지 여부를 기록하려면 번호가 매겨진 접두사가 필요합니다. 접미사는 순전히 사람의 가독성을위한 것입니다.

    스크린 샷 2020 08 27 at 5 09 25 AM

    계약을 작성할 때 해당 계약과 관련된 migration.js 파일이 있는지 확인해야합니다. artifacts.require (), deployer.deploy 등에 너무 깊이 들어 가지 않고 여기 이 방법의 사용법을 자세히 설명하기 위해 트러플 팀의 훌륭한 문서입니다..

    Truffle 프로젝트를 컴파일하려면 프로젝트가있는 디렉토리의 루트로 변경 한 후 터미널에 다음을 입력하십시오.

    트러플 컴파일

    터미널에서 마이그레이션을 실행하려면 결국 (하지만 아직이 작업을 수행 할 필요는 없습니다.!)

    트러플 마이그레이션

    그러면 프로젝트의 마이그레이션 디렉토리에있는 모든 마이그레이션이 실행됩니다..

    흥미로운 점은이 명령이 새로 생성 된 마이그레이션 만 실행한다는 것입니다. 따라서 이전 마이그레이션이 성공적으로 실행 된 경우 다시 실행되지 않습니다. 또한 실행할 새 마이그레이션이 없으면 단순히 실행되지 않습니다. 필요한 경우 –reset 옵션을 사용하여 처음부터 모든 마이그레이션을 실행할 수 있습니다..

    다른 명령 옵션이 설명되어 있습니다. 여기.

    참고 : 이전에 설치했지만 로컬 테스트를 위해 다음과 같은 테스트 블록 체인이 있는지 확인하십시오. 가나슈 마이그레이션을 실행하기 전에 설치 및 실행.

    테스팅

    테스트 작성과 관련하여 트러플에는이를 직관적으로 만드는 몇 가지 훌륭한 도구가 포함되어 있습니다. 특히 메인 넷에 컨트랙트를 배포 할 계획이라면 (테스트 넷에서도 좋은 방법입니다) 테스트를 실행하고 컨트랙트를 최선을 다해 확인하는 것이 매우 중요합니다. Truffle은 개발을 검토 / 테스트하는 것을 간단하고 관리하기 쉽게 만들었습니다..

    트러플은 모카 테스트 프레임 워크 및 차이 JavaScript 테스트를 작성할 수있는 견고한 프레임 워크를 제공하기위한 어설 션. 

    참고 : Mocha에서 단위 테스트를 작성하는 데 익숙하지 않은 경우 Mocha의 문서 계속하기 전에.

    참고 : 계약을 철저히 검토하는 데 활용할 수있는 훌륭한 도구는 신화, 현명한 계약에 대한 심층 검토를 제공하는 업계 최고의 보안 분석 서비스입니다. 그들의 임무는 비용이 많이 드는 오류를 방지 할뿐만 아니라 이더 리움을 전체적으로 더 안전하고 신뢰할 수있는 플랫폼으로 만드는 것입니다..

    모든 테스트 파일은 ./test 디렉토리에 있어야합니다. Truffle은 파일 확장자가 .js, .ts, .es, .es6, .jsx 및 .sol 인 테스트 파일 만 실행합니다. 다른 모든 파일은 무시됩니다..

    모든 테스트를 실행하려면 다음을 실행하십시오.

    트러플 테스트

    이제 truffle init가 생성하는 것과 프로젝트의 스캐 폴딩을 다루었으므로 이제 스마트 계약을 프로젝트에 추가하겠습니다.!

    스마트 계약 작성

    계약 디렉토리로 이동하여 로컬 테스트 환경 (ganache)에 배포 할 계획 인 첫 번째 계약을 작성하겠습니다.!

    먼저 HelloWorld.sol이라는 이름으로 .sol 파일을 생성합니다.

    다음으로 다음과 같은 기본 계약을 추가 할 수 있습니다.

    프라 그마 견고 함 >= 0.5.8 <0.7.0; 계약 HelloWorld {문자열 공개 메시지; 생성자 (문자열 메모리 initMessage) public {message = initMessage; } function update (string memory newMessage) public {message = newMessage; }}

    계약을 좀 더 자세히 살펴보면 몇 가지 요소를 분석 할 수 있습니다.

    계약은 기능과 데이터 (상태)의 모음입니다..

    pragma 키워드는 특정 컴파일러 기능 또는 검사를 활성화하는 데 사용할 수 있습니다. pragma 지시문은 항상 소스 파일에 로컬이므로 프로젝트에서 활성화하려면 모든 파일에 pragma를 추가해야합니다. 우리 (또는 어떤) 견고성 파일의 시작 부분에 pragma 선언이 없으면 우리 계약은 컴파일 방법을 알 수 없습니다..

    (여기 견고성 뉘앙스의 안과 밖을 배우기위한 견고성 문서에 대한 링크입니다)

    궁극적으로 계약은 이더 리움 블록 체인의 특정 주소에 상주하는 기능 및 데이터 (상태)의 모음입니다..

    계약의 기능을 살펴보면 메시지를 볼 수있는 공개 문자열로 설정하고 있음을 알 수 있습니다.. 

    키워드 “public”은 계약 외부에서 변수에 액세스 할 수 있도록하고 다른 계약 또는 SDK가 값 문자열 공개 메시지에 액세스하기 위해 호출 할 수있는 함수를 만듭니다..

    계약 HelloWorld {문자열 공개 메시지;

    다음은 계약 생성 중에 만 실행되는 기능입니다. 

    생성자 (문자열 메모리 initMessage) public {message = initMessage; }

    문자열 값을 받아 메모리 데이터 저장 영역에 값을 저장하고 메시지를 해당 값 메시지 즉 initMessage로 설정합니다..

    그런 다음 매개 변수로 전달되는 메시지를 초기화하고 업데이트 기능으로 변경 / 업데이트 할 수 있습니다..

    이것은 문자열을 매개 변수로 사용하고`message`를 업데이트하는 공개적으로 액세스 할 수있는 함수입니다 (아래 참조)..

    function update (string memory newMessage) public {message = newMessage; }}

    기본적이지만 소화 가능한 HelloWorld 계약이 있습니다.!

    이제 계약이 추가되었으므로 이제 컴파일 기능이 있는지 확인할 수 있습니다.!

    프로젝트의 Migration 폴더로 이동하여 이제 HelloWorld 계약 전용 a.js 파일을 만듭니다..

    새 파일을 만들고 이름은 2_deploy_contracts.js입니다.

    이전의 명명 규칙에 대한 참고 사항을 기억하십시오.!

    const HelloWorld = artifacts.require ("HelloWorld"); module.exports = function (배포자) {deployer.deploy (HelloWorld, "끈"); };

    잘 했어! 계약을 배포 할 준비가 거의되었지만 먼저 트러플 구성 파일이 누구와 대화해야하는지 알고 있는지 확인해야합니다. 앞서 언급했듯이이 섹션에서는 로컬 환경에 중점을 둘 것이지만 섹션 3 (spolier)에서는 로컬을 만들고 배포 할뿐만 아니라 테스트 네트워크로 가져옵니다.!

    네트워크 관련 섹션이 표시 될 때까지 truffle-config.js 파일에서 아래로 스크롤하십시오.

    주석 해제 / 다음 추가 

    네트워크 : {개발 : {호스트 : "127.0.0.1", 포트 : 8545, 네트워크 ID : "*", },

    이제 파일은 다음과 같아야합니다.

     

    스크린 샷 2020 08 31 at 6 14 45 AM

    여기서 일어나는 일은 우리가 연결할 대상에 대한 구성 파일의 특정 지침을 알려주는 것입니다. 이 경우 곧 보게 될 ganache-cli 도구에 연결합니다..

    Ganache 시작

    그 말로 계속해서 가나슈를 시작합시다 

    터미널에서 계속 실행하십시오. 

    가나슈 클리

    스크린 샷 2020 08 31 at 6 20 12 AM

    확인 해봐! 이제 터미널에서 바로 TestRPC를 실행하고 있습니다.! 

    (자세한 내용은 여기)

    참고 : 터미널에서이 탭을 열어 두되 계속해서 새 탭을 열어 작업하십시오..

    빠른 검토 

    프로젝트로 돌아가서 우리가 한 일을 빠르게 검토하겠습니다.. 

    • 우리는 새로운 프로젝트를 만들었습니다
    • 초기화 된 트러플
    • 비계를 빠르게 둘러 보았습니다.
    • HelloWorld 계약 생성
    • 계약에 대한 마이그레이션 폴더에 논리 추가
    • 구성 파일로 이동하여 네트워크 정보를 조정했습니다. 

    계약을 체결하고 실행할 시간! 

    새 터미널 창에서 (다른 창에서 실행중인 가나슈가 있으므로) 

    계속해서 달리자 

    트러플 컴파일

    이제 터미널에 결과가 표시됩니다.

    스크린 샷 2020 08 31 at 7 07 17 AM

    이제 프로젝트로 이동하면 두 개의 .json 파일이 포함 된 계약 폴더 위에 build / contracts 폴더가있는 것을 볼 수 있습니다. 넌 봐야 해: 

    • HelloWorld.json
    • Migrations.json 

    높은 수준의 .json 파일은 배포 된 계약과 그 기능을 설명합니다. 계약을 맥락화하고 그 기능을 호출 할 수 있습니다..

    내부를 살펴보면 전체 정보를 볼 수 있습니다.

     

    스크린 샷 2020 08 31 at 8 01 28 AM

    이 정보는 3 단계에서 더 자세히 살펴 보지만 살펴볼 중요한 것은 ABI입니다..

    애플리케이션 바이너리 인터페이스는 스마트 계약 작업을 위해 이더 리움에서 사용되는 데이터 인코딩 체계입니다..

    정보를 살펴보면 이해하기가 비교적 직관적입니다. ABI는 또한 사용자가 함수를 호출 할 수있는 방법, 즉 스마트 계약 주소와 관련된 함수의 위치를 ​​정의합니다. 높은 수준의 요약은 ABI가 계약 인터페이스에 대한 설명입니다. 코드를 포함하지 않으며 자체적으로 실행할 수 없습니다. 그런 다음 실행 가능한 EVM 코드 인 바이트 코드가 있지만 그 자체로는 컨텍스트가 없습니다..

    마이그레이션 시간

    확인! 

    이제 ganache-cli를 실행하고 스마트 계약을 컴파일 했으므로 이제 계약을 마이그레이션 할 차례입니다.! 

    터미널에서 계속 실행하십시오. 

    트러플 마이그레이션

    예! 훌륭해!

    스크린 샷 2020 08 31 at 8 37 37 AM

    우리는 스마트 계약을 성공적으로 배포 한 것을 볼 수 있습니다. 정말 유용한 정보가 생성 된 것을 볼 수 있으며 ganachi-cli가 실행중인 다른 탭으로 이동하면 TransactionReceipt가 표시됩니다 (직접 살펴보십시오)..

    ETH 테스트 

    Remix로 이동하기 전에 Remix에 대한 가스 요금을 지불 할 수 있도록 테스트 ETH를 확보해야합니다 (실제로 비용이 들지 않을 것입니다.). 

    에 머리 이 수도꼭지 그리고 Rinkeby를 잡아라. 우리는 3 단계에서 테스트 ETH가 무엇인지 살펴 보았지만,이 단계에서는 Proof of Work 테스트 넷 인 Ropsten과 ​​반대되는 권한 증명 네트워크 인 Rinkeby를 사용할 것임을 알고 있습니다. 그물). 2 단계와 3 단계를 완료하면 MetaMask 지갑에 두 가지 모두를 실험 할 수 있습니다.!

    리믹스

    이제 테스트 EHT가 있으므로 Remix로 이동하여 계약을 로컬 환경 외부에 배포하고 상호 작용할 수도 있습니다.!

    “도대체 Remix는 무엇입니까?” 

    물어봐서 기뻐! 

    Remix는 브라우저에서 바로 Solidity 계약을 작성하는 데 도움이되는 강력한 오픈 소스 도구입니다. Remix의 특히 놀라운 요소 중 하나는 브라우저와 로컬에서 모두 사용을 지원한다는 것입니다! Remix는 몇 가지 주요 기능에 대한 테스트, 디버깅 및 계약 배포를 지원합니다. 리믹스는 개발 과정에서 개발자에게 필수적인 도구로 간주되어야합니다. 이전에했던 것처럼 가나슈를 사용한 로컬 배포로 시작하는 것은 훌륭한 기반이며, 로컬 배포에서 이동하여 Remix에서 계약을 실험하고 상호 작용할 수 있습니다..

    메인 이더 리움 네트워크에 대한 잠재적 인 출시 전에 적절한 설득과 개발 테스트 (반복)를 통해 두통을 덜어 줄 수 있습니다.!

    이제 Remix를 사용하여 동일한 계약을 체결하고 로컬 환경 외부에 배포하겠습니다. 

    링크 여기 

    우리의 계약 

    새 파일을 클릭하고 이름을 HelloWorld.sol로 지정합니다.

    (여기 다시 사용할 계약이 있습니다) 

    프라 그마 견고 함 >= 0.5.8 <0.7.0; 계약 HelloWorld {문자열 공개 메시지; 생성자 (문자열 메모리 initMessage) public {message = initMessage; } function update (string memory newMessage) public {message = newMessage; }}

    이제 필드에 계약을 추가 할 수 있습니다. (아래에서 확인하세요) 

    스크린 샷 2020 08 31 at 9 47 48 AM

    이제 선택한 컴파일러 버전을 묻는 왼쪽 메뉴를 확인하겠습니다..

    컴파일러

    계약 내에서 컴파일러 범위를 선언했습니다..

    pragma 키워드는 특정 컴파일러 기능 또는 검사를 활성화하는 데 사용됩니다.. 

    따라서 컴파일러를 제공된 범위 사이에있는 0.6.0으로 설정할 수 있습니다. 

    스크린 샷 2020 09 08 at 8 44 41 AM

    우리의 계약은 자동으로 컴파일되어야합니다. 그렇지 않으면 HelloWorld.sol 컴파일을 클릭하십시오.

    다음으로 계약을 배포 할 환경을 설정합니다.! 

    트랜잭션 배포 및 실행

    환경 

    환경을 선택할 때 다음과 같은 몇 가지 옵션이 표시됩니다.

    자바 스크립트 VM : 모든 거래는 브라우저의 샌드 박스 블록 체인에서 실행됩니다. 즉, 페이지를 다시로드 할 때 아무것도 유지되지 않습니다. JsVM은 자체 블록 체인이며 다시로드 할 때마다 새 블록 체인을 시작하며 이전 블록 체인은 저장되지 않습니다..

    주입 된 제공자 : Remix는 삽입 된 web3 공급자에 연결됩니다.. 메타 마스크 web3을 주입하는 공급자의 예입니다..

    Web3 제공 업체 : Remix는 원격 노드에 연결됩니다. 선택한 공급자에게 URL을 제공해야합니다 : geth, parity 또는 모든 Ethereum 클라이언트.

    이 예에서는 다음을 사용합니다. Injected Web3

    MetaMask 지갑을 사용하고 Rinkeby 테스트 네트워크에 연결되어 있는지 확인합니다. 

    왼쪽에서 Rinkeby에 연결되어 있고 연결된 계정 주소도 볼 수 있습니다.! 

    스크린 샷 2020 09 08 at 8 30 29 AM

    모든 것이 설정 되었으면 계속해서 계약을 배포하겠습니다.!

    스크린 샷 2020 09 08 at 8 57 35 AM

    &# 127881; 우리가 해냈어! &# 127881; 

    제공된 단말기를 확인하시면 확인이 가능합니다.

    스크린 샷 2020 09 08 at 8 58 11 AM

    이제 배포 된 계약을 볼 수 있습니다. 메시지를 업데이트 할 수 있습니다 (주를 업데이트하고 있으므로 이에 대한 가스 요금에 서명하고 지불해야합니다).

    확인이 완료되면 메시지가 업데이트 된 것을 볼 수 있습니다.!

    스크린 샷 2020 09 08 at 9 18 54 AM

    &# 129395; 잘 했어! &# 129395; 

    우리는 처음에 로컬에서 시작한 계약을 가져와 계약 상호 작용을 시각적으로 표현하기 위해 Remix에 해당 계약을 배포했습니다. 개발자가이 공간에서 빌드를 시작할 때 이는 건강한 흐름입니다. Remix는 자주 사용해야하는 놀라운 도구입니다. 3 단계에서는 한 단계 더 나아가 1 단계에서 배운 모든 정보를 연결합니다. & 2, Truffle + Infura + React를 함께 묶습니다.! 

      개발자 온 보딩 : 1 단계개발자 온 보딩 1 단계

      개발자 온 보딩 : 1 단계

      개발자 온 보딩 : 3 단계개발자 온 보딩 3 단계

      개발자 온 보딩 : 3 단계

      10 분 이더 리움 오리엔테이션10 분 이더 리움 오리엔테이션

      10 분 이더 리움 오리엔테이션

    Mike Owergreen Administrator
    Sorry! The Author has not filled his profile.
    follow me