Caver-js를 사용하여 contract의 public 변수의 값은 어떻게 가져오는건가요?

제목 그대로 입니다. 메소드를 이용해서 가져오는건 예제들이 있는데

public 변수의 값을 가져오는건 어떻게 하는지 못찾겠습니다.

무조건 getter함수를 만들어야 하나요?

다른 contract보면 아닌거 같은데요. 못찾겠네요.

안녕하세요

따로 getter를 구현하지 않아도 됩니다. 아래 예제 참고해 주세요

const caver = new Caver('EN url')

async function testFunction() {
    const abi = [
        {
            inputs: [],
            stateMutability: 'nonpayable',
            type: 'constructor',
        },
        {
            inputs: [],
            name: 'creator',
            outputs: [
                {
                    internalType: 'address',
                    name: '',
                    type: 'address',
                },
            ],
            stateMutability: 'view',
            type: 'function',
        },
    ]
    const byteCode =
        '608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060b98061005f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c806302d05d3f14602d575b600080fd5b6033605f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff168156fea2646970667358221220bb9423869926516122ee109a6be8eddd7167ce9b5f6be29f5533e6bf14c3bd2d64736f6c63430007060033'

    const keyring = caver.wallet.add(caver.wallet.keyring.createFromPrivateKey('0x{private key}')
    )
    let c = caver.contract.create(abi)
    c = await c.deploy(
        {
            from: keyring.address,
            gas: 200000,
        },
        byteCode
    )

    const publicVar = await c.methods.creator().call()
    console.log(publicVar)
}

사용된 스마트컨트랙트는 아래와 같습니다

pragma solidity ^0.7.6;
contract Example {
    address public creator;

    constructor() {
        creator= msg.sender;
    }
}
1 Like