[BLOCKSDK] JAVASCRIPT로 이더리움 스마트 컨트랙트 함수 실행하기

BLOCKSDK·2023년 10월 17일
0

BLCOKSDK 개발자 문서공식 github에서 이더리움, 클레이튼, 폴리곤, BNC 등 다양한 블록체인 서비스 및 솔루션을 사용자의 프로그래밍 언어에 맞게 제공하고 있습니다.

이 글에서는 blockSDK JS 라이브러리를 사용하여 스마트 컨트랙트 함수를 실행하는 방법을 알아볼겁니다.

자바스크립트를 사용해 이더리움 스마트 컨트랙트의 함수를 실행하는 방법을 알아보겠습니다. 이 과정을 통해 블록체인 기반 서비스를 개발하고, 이더리움 생태계와 효과적으로 연동하는 방법을 배울 수 있습니다. 특히, BLOCKSDK를 활용해서 이더리움 네트워크에 접근하고 스마트 컨트랙트와 상호 작용하는 실제 예제를 살펴보겠습니다.

API를 사용하기전에 초기 설정을 해야합니다. BLOCKSDK 사용이 처음이라면 여기를 클릭해 API 사용을 위한 개발 초기 설정방법을 알아보세요.

이더리움 스마트 컨트랙트 함수 실행하는 방법

아래 코드 예시는 Remix IDE을 이용하여 스마트 컨트랙트 함수를 실행하는 방법과 실행결과를 소개하는 글입니다.

스마트 계약 함수호출(읽기)

  • 사용 방법
result = client.ethereum.ReadContract({
    'contract_address' : "컨트렉트 주소",
    'method' : "실행할 함수 명",
    'return_type' : "반환 데이터 타입",
    'parameter_type' : ["인풋 파라미터 타입"],
    'parameter_data' : ["인풋 파라미터 데이터"]
});
  • 사용 예시
const BLOCKSDK = require('blocksdk-js');
const client = new BLOCKSDK("Node_RPC_TOKEN");

client.ethereum.ReadContract({
    'contract_address' : "0xC1C5C8B5dA055192Eea5732D7f31Dba90DC6EA9d",
    'method' : "balanceOf",
    'return_type' : "uint256",
    'parameter_type' : ["address"],
    'parameter_data' : ["0xc7A85349e1055C53AB15A0252Cec514300D764b8"]
}).then(r => console.log(r));
  • 실행 결과
{
  result: '1',
  hex: '0x0000000000000000000000000000000000000000000000000000000000000001',
  requestData: {
    contract_address: '0xC1C5C8B5dA055192Eea5732D7f31Dba90DC6EA9d',
    method: 'balanceOf',
    return_type: 'uint256',
    parameter_type: [ 'address' ],
    parameter_data: [ '0xc7A85349e1055C53AB15A0252Cec514300D764b8' ]        
  }
}

스마트 계약 함수호출(쓰기)

스마트 계약 함수호출(쓰기) 사용 시 수수료가 빠져나갈 수 있습니다.

  • 사용 방법
result = client.ethereum.WriteContract({
    'contract_address' : "컨트렉트 주소",
    'from' : "트랜잭션을 생성할 주소",
    'private_key' : "from 의 프라이빗키",
    'method' : "실행할 함수 명",
    'parameter_type' : ["인풋 파라미터 타입"],
    'parameter_data' : ["인풋 파라미터 데이터"]
});
  • 사용 예시

※ mint 함수의 경우 contract_address의 소유자만 사용 가능하도록 해놓는 경우가 많습니다.

const BLOCKSDK = require('blocksdk-js');
const client = new BLOCKSDK("Node_RPC_TOKEN");

client.ethereum.WriteContract({
    'contract_address' : "0xC1C5C8B5dA055192Eea5732D7f31Dba90DC6EA9d",
    'from' : "0xc507112d737f0d1be2e83ddfc0c0c2439aa97fbe",
    'private_key' : "from 의 프라이빗키",
    'method' : "mint",
    'gas_limit': 200000,
    'parameter_type' : ["string"],
    'parameter_data' : ["https://ipfs.io/ipfs/bafyreibqvyzcq24qby3mszzyqgifwz37tu5b277dzl4w2vgjx5j6ak5rqe/metadata.json"]
}).then(r => console.log(r));
  • 실행 결과
{
    "payload": {
        "hash": "0xb03d413ff7719221e6d86b3f0880fb1da8f986b344dfa1fb0558db93db9e7e02",
        "from": "0xc7a85349e1055c53ab15a0252cec514300d764b8",
        "to": "0xc1c5c8b5da055192eea5732d7f31dba90dc6ea9d",
        "value": "0",
        "gasUsed": null,
        "gasLimit": "200000",
        "gasPrice": "30000000000",
        "fees": null,
        "nonce": 4,
        "transactionIndex": 0,
        "input": "0xd85d3d270000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000005e68747470733a2f2f697066732e696f2f697066732f62616679726569627176797a63713234716279336d737a7a7971676966777a333774753562323737647a6c34773276676a78356a36616b357271652f6d657461646174612e6a736f6e0000",
        "datetime": "2023-10-16T07:44:07+00:00",
        "timestamp": 1697442247,
        "confirmations": 0,
        "sign": {
            "v": "0x2d",
            "r": "0x50ae3d27de297873f44059c0a4879edf8a63d21c20ade8b637e7a0f1f1476aa3",
            "s": "0x96479ac093e8fa1def1c02d468b18c626968061756f7f157bd4bd98d63b99c"
        },
        "status": null
    },
    "state": {
        "code": 200,
        "success": true
    }
}

마무리

BLOCKSDK를 활용하면 블록체인 기술을 통한 서비스 개발 시간이 간소화되며, 이더리움 외에도 클레이튼, 폴리곤, BSC등 다양한 블록체인 플랫폼을 지원함으로써 폭넓은 사용 사례를 구현할 수 있습니다. 블록체인 개발이 처음이라도 이러한 플랫폼들은 시작하는 데 큰 도움이 됩니다.

더 읽을거리

[BLOCKSDK] JAVASCRPT로 ERC-721(NFT)을 생성하고 배포하는 방법

profile
BLOCKSDK는 간편 코인 제작 기능 과 블록체인 서비스 개발을 단순화하여 블록체인에 전문화된 개발자 없이 빠르게 개발할수 있는 API 와 완성형 솔루션 제공 서비스입니다

0개의 댓글

관련 채용 정보