주계약
먼저 스마트 계약 호출의 기본 원리를 살펴보겠습니다. 지능형 계약은 etherfang 노드의 EVM 에서 실행됩니다. 따라서 계약을 호출하려면 노드에 액세스해야 합니다.
후단 절차를 예로 들어 보겠습니다. 백엔드 서비스가 노드에 연결하려는 경우 두 가지 가능성이 있습니다. 하나는 쌍방이 같은 호스트에 있다는 것이다. 백엔드 접속 노드는 로컬 IPC (프로세스간 통신) 메커니즘 또는 RPC (원격 프로시저 호출) 메커니즘을 사용할 수 있습니다. 또 다른 경우에는 쌍방이 같은 호스트에 있지 않고 RPC 메커니즘만 사용하여 통신할 수 있습니다.
RPC 에 대해 말하자면 독자들은 Geth 의 시동 매개변수에 대해 약간의 인상을 받아야 한다. Geth 를 시작할 때 RPC 서비스를 시작하도록 선택할 수 있습니다. 해당 기본 서비스 포트는 8545 입니다. 。
그럼, 스마트 계약 운영 과정을 살펴봅시다.
지능형 계약은 백엔드 서비스가 노드를 연결하여 해당 노드에 지능형 계약 호출 (트랜잭션) 을 전송하는 프로세스입니다. 거래의 합법성을 확인한 후, 노드는 전망을 방송하고, 광부들은 포장하여 거래 확인을 나타내고, 거래가 완료되었음을 나타낸다.
데이터베이스와 마찬가지로 각 블록 체인 플랫폼은 주요 개발 언어인 SDK (소프트웨어 개발 키트) 를 제공합니다. Geth 자체는 Go 언어로 작성되었기 때문에 Go 언어로 노드를 연결하고 트랜잭션을 보내려면 go-ethereum(Geth 소스 코드) 패키지를 프로젝트로 직접 가져올 수 있습니다. 나머지 문제는 프로세스와 API 입니다.
요약하자면, 스마트 계약이 호출되는 두 가지 요점은 노드와 SDK 입니다.
IPC 는 백엔드와 노드가 같은 호스트에 있어야 하기 때문에 많은 개발자들이 RPC 모드를 사용합니다. Etherfang 은 RPC 외에도 개발자에게 json- RPC 인터페이스를 제공합니다. 이 문서에서는 다루지 않습니다.
다음은 Go 언어를 사용하여 go-ethereum 소스 코드 라이브러리를 통해 지능형 계약을 호출하는 방법을 설명합니다. 고정된 절차가 있다. 먼저 일반적인 단계를 말하고, 아래 계약을 예로 들어 보자.
단계 0 1: 계약을 컴파일하고 계약 ABI (응용 프로그램 바이너리 인터페이스) 를 얻습니다. ABI 버튼을 클릭하여 계약 ABI 정보를 복사하여 calldemo.abi 파일에 붙여 넣습니다 (파일은 Go 언어 IDE 를 사용하여 만들 수 있고, 파일 이름은 사용자 정의할 수 있으며, 접미사는 ABI 가 가장 좋습니다).
Calldemo.abi 를 단일 디렉토리에 저장하는 것이 좋습니다. "ls" 명령을 입력하면 calldemo.abi 파일만 볼 수 있습니다. 참조 효과는 다음과 같습니다.
단계 02: 계약 주소 가져오기 계약은 Geth 노드에 배치됩니다. 따라서 환경을 웹 3 공급자로 선택합니다.
환경 옵션 상자에서 Web3 Provider 를 선택하고 배포 버튼을 클릭합니다.
구축 후 계약 주소는 0xa09209c28 AEF 59a4653b 905792a910e78e7407 입니다.
03 단계: abigen 도구 (Geth toolkit 의 실행 프로그램) 를 사용하여 지능형 계약을 Go 코드로 컴파일합니다. Abigen 도구는 ABI 파일을 Go 코드로 변환하는 데 사용되며 명령은 다음과 같습니다.
각 매개변수의 의미는 다음과 같습니다. (1)abi: 수신 ABI 파일을 지정합니다. (2) 유형: 출력 파일의 기준 구조물 유형을 지정합니다. (3)pkg: 출력 패키지의 이름을 지정합니다. (4)out: 출력 파일 이름을 지정합니다. 실행 후 코드 디렉토리에 funcdemo.go 파일이 표시됩니다. 독자는 파일을 열어 감상할 수 있지만 수정하지 않도록 주의합니다.
04 단계: main.go 생성 및 다음 코드 작성 코드의 HexToAddress 함수에서 배포 후 계약의 주소를 기록해 두십시오. 이 주소는 0 1 단계에서 가져온 것입니다.
04 단계: go mod 자동 인식 프로젝트 설정
앞서 언급했듯이 Go 언어로 스마트 계약을 호출하려면 go-ethereum 프로젝트를 다운로드해야 합니다. 다음 명령을 사용할 수 있습니다.
이 명령은 자동으로 go-ethereum 을 "$ gopath/src/github.com/ethereum/go-ethereum" 으로 다운로드합니다. 그러나 Go 언어는 1. 1 1 버전부터 모듈 관리 프로젝트의 모델을 늘렸다. Go mod 를 설정하기만 하면 종속 항목 다운로드에 신경 쓰지 않아도 된다.
다음으로 설정 모듈이 적용됩니다, GOPROXY. 이러한 명령은 다음과 같습니다.
프로젝트에서 초기화를 수행하면 calldemo 가 이름을 사용자 정의할 수 있습니다.
05 단계: 코드 실행 코드를 실행하면 다음과 같은 효과와 2020 년의 최종 출력을 볼 수 있습니다.
위의 출력 정보에서 볼 수 있듯이, Go 언어는 자동으로 종속 파일을 다운로드합니다. 이것이 go mod 의 마법입니다. 2020 을 보면 독자도 달리기 결과가 정확하다는 것을 알고 있다고 믿는다.