Dettagli di implementazione per PACK e UNPACK
1 risposta
- voti
-
- 2019-03-01
Hoimplementato
PACK
eUNPACK
nelprogettotezbridge-crypto
.Puoi controllareil codice sorgente qui: codec.js # L426
Ecco alcuni casi ditest: index.js # L35
Inbreve,ci sono diversemappature ( codec.js # L166 , codec.js # L288 )trail valore Michlinee la rappresentazionebinaria. La conversione è solo unapasseggiata a senso unicotrai datie ognitipo di dati (come
int
,string
..) hail suometodo di codifica/decodifica specifico.I have implemented the
PACK
andUNPACK
intezbridge-crypto
project.You can checkout the source code here: codec.js#L426
Here are some test cases: index.js#L35
In short words, there are several mappings(codec.js#L166, codec.js#L288) between the Michline value and the binary representation. The conversion is just a one way walk though the data, and each data type(like
int
,string
..) has its specific encoding/decoding method.-
Stavo cercandoil codice sorgente dal repository [tezos] (https://gitlab.com/tezos/tezos)per l'op_mapping che hai.Sono curioso di sapere dove siano definite questemappature,manon le hotrovate.Guardareil codice sorgente ditezosmi haportato a unafunzione `write_rec`in`binary_writer.ml`.I was grepping around the source code from the [tezos](https://gitlab.com/tezos/tezos) repository for the op_mapping you have. I am curious where these mappings are defined in there, but I have not found them. Looking through tezos source code has led me to a function `write_rec` in `binary_writer.ml`.
- 0
- 2019-03-04
- MCH
-
Queste sono anchebuone risorse: [The data_encoding library] (http://tezos.gitlab.io/mainnet/tutorials/data_encoding.html)e [Module Tezos_data_encoding.Data_encoding] (http://tezos.gitlab.io/mainnet/api/api-inline.html #tezos-data-encoding/Tezos_data_encoding/index.html)These are also good resources: [The data_encoding library](http://tezos.gitlab.io/mainnet/tutorials/data_encoding.html) and [Module Tezos_data_encoding.Data_encoding](http://tezos.gitlab.io/mainnet/api/api-inline.html#tezos-data-encoding/Tezos_data_encoding/index.html)
- 0
- 2019-03-04
- MCH
Nella sezione Operazioni suibyte diil documentobianco di Michelson,si dice che:
Sono curioso di conosceremaggiori dettagli su come vengonoimplementati
PACK
eUNPACK
e qual è la rappresentazionebinaria. Hoesaminatoil codice sorgentee non ci sonomolti commentinell'implementazione.Modifica:
I dettagliforniti dall'utente catsigma sonomolto utili,mami piacerebbe comunqueesserein grado di seguire comefunziona la serializzazionenel codice sorgentee da doveproviene l'operazione dimappatura del codicebinario.
Hotrovato lafunzione
interp
quie l'implementazione diPack
:src/proto_alpha/lib_protocol/src/script_interpreter.ml#L697
pack_data
è definito qui:src/proto_alpha/lib_protocol/src/script_ir_translator.ml#L3162
Data_encoding.Binary.to_bytes_exn
sembra lafunzione chiave.src/lib_data_encoding/binary_writer.ml # L338
Oraproviamo atrovare quale sarebbe la codifica di
False
. Ecco dell'altro codice riorganizzato src/lib_data_encoding/binary_writer.ml :Ora dobbiamotrovare
MBytes.set_int8
. Hotrovato soloilfile dellafirma deltipo.src/lib_protocol_environment/sigs/v1/mBytes.mli
mBytes
sembraessere una libreriaesternamanon hotrovatoilnome. Inoltre,non vedo come questo corrisponda aop_mapping
comemenzionatoin tezbridge-crypto.