트랜잭션 생성 방법
3 대답
- 투표
-
- 2019-02-07
관련 단계를 이해하기위한 자료를 제공하는 여러 참조 자료가 온라인에 있습니다. 이 를 확인할 수 있습니다. 또는 그 . 이 다른 질문 <에서 일부 요소도 제공됩니다./p>
기본적으로 단계는 다음과 같습니다.
- 종속성 가져 오기
- 분기 해시 :
/chains/main/blocks/head/hash
- 카운터 :
/chains/main/blocks/head/context/contracts/<source_pkh>/counter
- 프로토콜 해시 :
/protocols
- 분기 해시 :
- 포지 작업 (
/chains/main/blocks/head/helpers/forge/operations
)하지만 네이티브 클라이언트 외부에서이 로직을 복제하는 것이 쉬운 지 확인합니다. - 부호 바이트 (
tezos-client sign bytes
) - 사전 적용 작업 (
/chains/main/blocks/head/helpers/preapply/operations/)
- 서명을 16 진수 형식으로 디코딩
- 삽입 작업 (
/inject/operation
)
There are multiple references online which provide material to understand the steps involved in this. You can check this or that. Some elements are also provided in this other question
Basically the steps are
- get dependencies
- branch hash:
/chains/main/blocks/head/hash
- counter:
/chains/main/blocks/head/context/contracts/<source_pkh>/counter
- protocol hash:
/protocols
- branch hash:
- forge operation (
/chains/main/blocks/head/helpers/forge/operations
) Note sure if it's easy to replicate this logic outside from the native client though - sign bytes (
tezos-client sign bytes
) - preapply operation (
/chains/main/blocks/head/helpers/preapply/operations/)
- decode signature to hexadecimal format
- inject operation (
/inject/operation
)
-
- 2019-02-07
helpers/scripts/run_operation
은 가스 및 저장 요구 사항을 추정하기 위해 서명하지 않고 작업을 시뮬레이션하는 데 유용합니다 (서명에 0 바이트를 사용할 수 있음).여기서tezos-client -l
이gas_limit 및 storage_limit를 최대 값으로 설정 한 다음 결과를 사용하여 실제gas_limit 및 storage_limit를 설정하는 것을 볼 수 있습니다 (사용자의 최대 허용 storage_limit에 따라 "-"라고 함).화상 캡 ').작업이 바이너리로 인코딩되는 방법을 알아 보려면
tezos-client describe unsigned operation
을 참조하세요.helpers/scripts/run_operation
is useful to simulate an operation without signing it (you may use zero bytes for the signature), in order to estimate the gas and storage requirements. You will seetezos-client -l
setting gas_limit and storage_limit to the maximum values here, and then using the result to set the actual gas_limit and storage_limit (subject to the user's maximum acceptable storage_limit, called "--burn-cap").To learn how the operation is encoded in binary, you can see
tezos-client describe unsigned operation
.-
내 대답이 왜 사전 신청이 필요한지 설명하지 않는다는 것을 알았습니다.왜 run_operation이 아닌가?I noticed my answer does not explain why preapply is needed. Why not just run_operation?
- 0
- 2019-03-02
- Tom
-
- 2019-02-07
가장 쉬운 방법은 예 :
eztz
는 전송을 구현합니다 .그런 다음 여기 에서 전송 작업이 어떻게 위조되는지 확인하세요.a>.
그리고 마지막으로 위조 된 작업이 어떻게 주입되는지 여기 .
보기에eztz의
forge
가/helpers/forge/operations
에 의해 원격으로 수행되는 것 같습니다.Easiest would be checking out how e.g.
eztz
implements transfers.Then see how the transfer operations is forged here.
And finally how the forged operation is injected here.
By the looks of it, seems like eztz's
forge
is done remotely by/helpers/forge/operations
.-
실제로eztz는 로컬로 위조하지만 당분간 우리는 로컬 위조가 일치하는지 다시 확인하는 방법으로 원격 위조를 사용합니다.앞으로 원격 위조 검사를 제거 할 예정입니다. :-)Actually eztz forges locally, but for the time being we use the remote forge as a way to double check that what we forged locally matches. In future, we will remove the remote forge check :-)
- 1
- 2019-02-08
- Stephen Andrews
거래 작업 생성과 관련된 여러 단계를 이해하려고합니다.
Tezos-client -l
은 다음과 같은 여러 RPC 호출을 보여줍니다.run_operation
및preapply
는 무엇을하며 둘 다 필요한 이유는 무엇입니까?게다가 주입 할 연산은 바이너리 인코딩인데 어떤 인코딩이 사용됩니까?(
/chains/main/blocks/head/helpers/forge/operations
를 사용하여 인코딩을 얻을 수 있지만 작업을 직접 인코딩하고 싶습니다).