사전 요구 사항
Foundry 프로젝트가 이미 설정되어 있고 스마트 컨트랙트가 성공적으로 배포되어 있어야 합니다.
방법은 Foundry로 스마트 컨트랙트 배포 튜토리얼을 참조하세요.
선택 사항이지만 강력히 권장: 스마트 컨트랙트를 성공적으로 검증했어야 합니다.
방법은 Foundry로 스마트 컨트랙트 검증 튜토리얼을 참조하세요.
함수 호출 - 쿼리
쿼리는 읽기 전용 작업입니다.
따라서 스마트 컨트랙트 상태는 업데이트되지 않습니다 .
상태 변경 이 필요하지 않으므로 지갑, 서명 또는 트랜잭션 수수료(가스)가 필요하지 않습니다.
다음 명령을 사용하여 value() 함수를 쿼리합니다:
cast call \
--rpc-url injectiveEvm \
${ SC_ADDRESS } \
"value()"
${SC_ADDRESS}를 스마트 컨트랙트를 배포한 주소로 바꾸세요.
예를 들어 스마트 컨트랙트 주소가 0x213ba803265386c10ce04a2caa0f31ff3440b9cf인 경우 명령은 다음과 같습니다:
cast call \
--rpc-url injectiveEvm \
0x213ba803265386c10ce04a2caa0f31ff3440b9cf \
"value()"
다음이 출력됩니다.
0x0000000000000000000000000000000000000000000000000000000000000000
0x0000000000000000000000000000000000000000000000000000000000000000은 0을 의미합니다.
이것은 Solidity의 uint256(스마트 컨트랙트의 value() 함수의 반환 유형)에 대한 16진수 원시 표현입니다.
함수 호출 - 트랜잭션
트랜잭션은 쓰기 작업입니다.
따라서 스마트 컨트랙트 상태가 업데이트됩니다 .
상태 변경 이 발생할 수 있으므로 트랜잭션은 지갑으로 서명해야 하며 트랜잭션 수수료(가스)를 지불해야 합니다.
다음 명령을 사용하여 increment(num) 함수를 트랜잭션합니다.
cast send \
--legacy \
--rpc-url injectiveEvm \
--gas-price 160000000 \
--gas-limit 2000000 \
--account injTest \
${ SC_ADDRESS } \
"increment(uint256)" \
1
가스 가격은 wei 로 표시됩니다.
1 wei = 10^-18 INJ.
${SC_ADDRESS}를 스마트 컨트랙트를 배포한 주소로 바꾸세요.
예를 들어 스마트 컨트랙트 주소가 0x213ba803265386c10ce04a2caa0f31ff3440b9cf인 경우 명령은 다음과 같습니다:
cast send \
--legacy \
--rpc-url injectiveEvm \
--gas-price 160000000 \
--gas-limit 2000000 \
--account injTest \
0x213ba803265386c10ce04a2caa0f31ff3440b9cf \
"increment(uint256)" \
1
성공하면 다음과 유사한 결과가 생성됩니다:
Enter keystore password:
blockHash 0xe4c1f5faafc5365c43678135d6adc87104f0e288cddfcdffeb2f5aa08282ca22
blockNumber 83078201
contractAddress
cumulativeGasUsed 43623
effectiveGasPrice 160000000
from 0x58f936cb685Bd6a7dC9a21Fa83E8aaaF8EDD5724
gasUsed 43623
logs []
logsBloom 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
root
status 1 (success)
transactionHash 0x3c95e15ba24074301323e09d09d5967cc2858e255d1fdfd912758fd8bbd353b4
transactionIndex 0
type 0
blobGasPrice
blobGasUsed
to 0x213bA803265386C10CE04a2cAa0f31FF3440b9cF
상태를 업데이트한 후 새 상태를 쿼리할 수 있습니다.
결과는 상태 변경을 반영합니다.
cast call \
--rpc-url injectiveEvm \
${ SC_ADDRESS } \
"value()"
이번에는 0 + 1 = 1이므로 결과가 0x0000000000000000000000000000000000000000000000000000000000000001이어야 합니다.
0x0000000000000000000000000000000000000000000000000000000000000001
다음 단계
축하합니다. Foundry를 사용하여 Injective에서 EVM 스마트 컨트랙트를 개발하는 전체 가이드를 완료했습니다!
스마트 컨트랙트는 비기술 사용자에게 사용자 경험을 제공하지 않습니다.
이들을 위해 탈중앙화 애플리케이션을 구축해야 합니다.
이를 위해 첫 번째 dApp 가이드를 확인하세요!