오프라인 거래는 어떻게하나요?
1 대답
- 투표
-
- 2019-01-30
Tezos에 포함 된 모든 거래는 지난 60 개 블록 해시 내의 블록 해시를 참조해야합니다. 이는 합의 외에도 체인의 추가 공증 레이어 역할을하지만 오프라인으로 거래에 서명하려면 몇 가지 추가 단계가 필요합니다.
<시간>이 작업을 수행하는 한 가지 방법은 RPC를 사용하는 것입니다.
<사전> <코드> /chains/main/blocks/head/helpers/forge/operations여기 .
이를 위해 실행중인 노드가 필요하지만이를 위해 인터넷에 연결할 필요는 없습니다. 또한 최근 블록의 해시를 수동으로 제공해야합니다.
"서명 된 작업"을 얻으려면 가져온 데이터에 서명해야하지만 안타깝게도 아직 CLI에서 지원되지 않습니다.그런 다음 테 조스 CLI를 사용하여 수행 할 수있는 작업에 서명해야합니다.
./tezos-client 부호 바이트 & lt;bytes > & lt; src >
작업 앞에 "03"바이트를 추가해야합니다. 이것은 서명자의 워터 마크 역할을합니다.
마지막으로 서명과 서명되지 않은 작업을 결합해야합니다. 안타깝게도 아직 CLI에서 지원되지 않습니다.
<시간>또 다른 방법은 서명 된 Michelson 데이터를 수락하고이를 기반으로 조치를 취하는 스마트 계약을 사용하는 것입니다 (예 : 매개 변수에 지정된 주소로 자금 송금). 이 접근 방식의 이점은 메시지 자체에 서명 할 때 최근 해시를 알 필요가 없다는 것입니다. 다음 명령과 함께tezos cli를 사용할 수 있습니다.
./tezos-clienttypecheck 데이터 & lt; data > & lt;type >
뒤에
./tezos-client 부호 바이트 & lt; data > & lt; src >
이 메시지를 정기적 인 거래로 스마트 계약에 보내야하지만 거래 수수료를 지불하는 데 필요한 아주 적은 양의 자금 만 제어하는 키로 거래를 수행 할 수 있습니다.
All transactions included in the Tezos must reference a block hash within the past 60 block hashes. This acts as an additional layer of notarization of the chain, besides the consensus but it means you need a few extra steps to sign transactions offline.
One way to do this is to use the RPC:
/chains/main/blocks/head/helpers/forge/operations
Documented here.
You need a running node for this, but it doesn't have to be connected to the Internet for this. You will also need to manually provide the hash of a recent block.
You'll have to sign the data you get out of it to get a "signed operation" but, unfortunately, that is not supported in the CLI yet.You then need to sign the operation, which you can do using the tezos cli with
./tezos-client sign bytes <bytes> for <src>
You will need to add the "03" byte in front of the operation. This acts as a watermark for the signer.
Finally you need to combine the signature and the unsigned operation, unfortunately that is not supported in the CLI yet.
Another way is to use a smart-contract that accepts signed Michelson data and takes action based on it (for instance, send funds to an address specified in the parameters). The benefit of this approach is that you do not need to know a recent hash when signing the message itself. You can just use the tezos cli with the command
./tezos-client typecheck data <data> against type <type>
followed by
./tezos-client sign bytes <data> for <src>
You will then have to send this message to the smart contract with a regular transaction, but that transaction can be performed with a key that only controls a very small amount of funds, just what is needed to pay for the transaction fee.
-
"안타깝게도 아직 CLI에서 지원되지 않습니다."-(두 번째 상황에서)`signbytes 0x05 ...for
`가 아니라 실제로`signbytes 0x03 ...for `가 가능합니다.. "unfortunately, that is not supported in the CLI yet" -- One can indeed `sign bytes 0x03... for`, rather than (in the second situation) `sign bytes 0x05... for `. - 0
- 2019-01-30
- Tom
-
아,"signfor"가 0x03에서 작동하는지 확실하지 않습니다. 유효한 서명 된 트랜잭션을 생성합니까?ah, I wasn't sure if "sign for" worked for 0x03, does it produce a valid signed transaction?
- 0
- 2019-01-30
- Arthur B
-
그래도 서명 된 작업을 제공하지 않습니다.still doesn't give you a signed operation though
- 1
- 2019-01-30
- Arthur B
-
감사합니다 @ArthurB :thumbsup : CLI를 사용하는 것이 안전하고 "공식적인"방법이라고 생각합니다.그러나 IMHO는 대다수의 사람들에게 가장 사용자 친화적 인 방법이 아닙니다.Thank you @ArthurB :thumbsup: I guess using the CLI would be a safe and "official" way. But IMHO it is not the most user-friendly way for the majority of people.
- 1
- 2019-01-31
- XTZST2O
에어 갭 기기에서 오프라인 거래를 생성하고 네트워크에 브로드 캐스트하려면 어떻게해야하나요?