안녕하세요,
klaytn체인의 데이터만 읽고 feeDelegatedContractExecution을 수행하고 있었는데,
현재 klaytn 체인의 데이터와 ethereum 체인의 데이터에 둘다 접근해야되는 상황입니다
다음은 go klaytn을 통해 컨트랙트 데이터를 읽기 위해 사용한 코드 스니펫입니다.
...
result, err := client.CallContract(ctx, klaytn.CallMsg{
To: &contractAddressHex,
Data: callData,
}, nil)
...
client 정의시 provider url에 이더리움 체인의 provider url을 넣고 호출 시
the method klay_call does not exist/is not available
이런 에러가 나오는데 혹시 이를 우회할 수 있는 방법이 있을까요? go-ethereum라이브러리를 사용해보려 했으나, duplicate symbol에러로 컴파일이 안되는 상황이 발생했고, 하단의 스레드에서는 go klaytn라이브러리만 사용하라고 권장해주셨는데, 혹시 다른 체인의 컨트랙트 데이터를 읽을 수 있는지 궁금합니다
안녕하세요!
klaytn 모듈과 go-ethereum 모듈을 동시에 사용하는 소스 코드에서 go build 시 오류가 발생이 되어서 문의를 드립니다.
macOS 환경에서 아래와 같은 오류 메시지가 나왔습니다.
…
duplicate symbol ‘_secp256k1GoPanicError’ in:
/var/folders/5v/206vphw577b7rsrz53s31mhm0000gn/T/go-link-1644593204/000014.o
/var/folders/5v/206vphw577b7rsrz53s31mhm0000gn/T/go-link-1644593204/000018.o
…
ld: 33 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
동일한 오브젝트 파일을 링크하는 과정 중에 발생한 것으로 보입니다.
혹…
Client.CallContract의 namespace가 “klay_call” 로 고정되어있기 때문에 발생하는 문제
func (ec *Client) CallContract(ctx context.Context, msg klaytn.CallMsg, blockNumber *big.Int) ([]byte, error) {
var hex hexutil.Bytes
err := ec.c.CallContext(ctx, &hex, "klay_call", toCallArg(msg), toBlockNumArg(blockNumber))
if err != nil {
return nil, err
}
return hex, nil
}
rpc.CallContext를 직접 호출하는 방식을 시도해보겠습니다