스마트 계약과 상호 작용 - .send 또는 .call?

저는 건축할 때 배우는 것을 좋아합니다. 따라서 새로운 패러다임이나 도구를 선택할 때 자습서, 블로그 게시물 및 책은 내가 찾는 도구입니다. 같은 마음가짐으로 DApp을 만지작거리고 나서 초보자에게 도움이 될 수 있는 중요한 세부 사항을 깨달았습니다.

자습서를 따라 첫 번째 web3 응용 프로그램을 빌드할 때 sendcall 메서드의 차이점을 즉시 알아차리지 못할 수 있습니다.

아래에서 차이점을 설명하겠습니다.

부르다

계약 상태를 수정하지 않고 값 반환 이외의 논리가 없는 계약 메서드는 call 메서드를 사용하여 호출할 수 있습니다.
  • 가스나 거래 수수료가 들지 않습니다. 무료로 전화를 걸 수 있습니다
  • .
  • 보기 및 순수 함수(읽기 전용)에 사용되므로 더 빠르게 실행할 수 있습니다
  • .
  • MetaMask 또는 다른 공급자와 서명할 필요 없음
  • 가스를 전달하지 않고 아무 것도 게시하지 않기 때문에 사용하기에 더 안전합니다
  • .

    call to contract

    web3.eth.getBalance("0x407d73d8a49eeb85d32cf465507dd71d507100c1")
    .then(console.log);
    > "1000000000000"
    


    보내다

    계약 상태를 수정하는 계약 방법은 send 방법을 사용하여 이 수정 사항을 블록체인에 추가합니다.
  • 가스 및 거래 수수료가 듭니다. 이러한 기능을 호출하는 것은 자유롭지 않습니다
  • .
  • 발신자 주소
  • from가 필요합니다.
  • MetaMask 또는 다른 공급자를 통해 서명해야 합니다
  • .
  • 트랜잭션 형태로 공개되며 블록체인에서 공개적으로 볼 수 있음

  • send to contract

    web3.eth.sendTransaction({
        from: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe',
        to: '0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe',
        value: '1000000000000000'
    })
    .on('transactionHash', function(hash){
        ...
    })
    .on('receipt', function(receipt){
        ...
    })
    .on('confirmation', function(confirmationNumber, receipt){ ... })
    .on('error', console.error);
    

    getBalance는 값을 반환하고 sendTransaction 메서드는 32바이트 트랜잭션 해시를 포함할 것으로 예상되는 콜백을 반환합니다.

    이는 계약 및 사용자와의 상호 작용을 설계할 때 염두에 두어야 할 중요한 세부 사항입니다.

    즐거운 코딩하세요!

    좋은 웹페이지 즐겨찾기