Micheline
2 대답
- 투표
-
- 2019-02-02
최적화 된 주소는 22 바이트이며 다음 형식을 따릅니다.
- 첫 번째 바이트는 암시 적 (tz)의 경우 00 또는 발신 (KT)의 경우 01의 태그입니다.
첫 번째 바이트가 00이고 암시 적 (tz) 주소로 작업하는 경우 :
- 두 번째 바이트는 곡선과 접두사를 설명합니다. 00 (ed25519/tz1),01 (secp256k1/tz2) 또는 02 (p256/tz3)입니다.
- 나머지 20 바이트는 주소입니다.
첫 번째 바이트가 01이고 원래 (KT) 주소로 작업하는 경우 :
- 다음 20 바이트는 주소입니다.
- 마지막 바이트는 00 버퍼 (길이를 22 바이트로 채움)입니다.
최적화 된 양식을 주소로 변환하려면eztz를 사용하여 다음과 같이 할 수 있습니다.
function getAddressFromOptimized(hex){ var address, prefix; if (hex.substring(0,2) == "00") { if (hex.substring(2,4) == "00") prefix = eztz.prefix.tz1; if (hex.substring(2,4) == "01") prefix = eztz.prefix.tz2; if (hex.substring(2,4) == "02") prefix = eztz.prefix.tz3; address = hex.substring(4,44); } else if (hex.substring(0,2) == "01"){ prefix = eztz.prefix.KT; address = hex.substring(2,42); } return eztz.utility.b58cencode(eztz.utility.hex2buf(address), prefix); } console.log(getAddressFromOptimized("011cd5f135e80fd8ebb6e43335b24ca6116edeba6900"))
형식은 여기에 설명되어 있습니다. http://tezos.gitlab.io/mainnet/api/p2p.html#contract-id-22-bytes-8-bit-tag
Optimized addresses are 22 bytes, which follows the following format:
- The first byte is a tag, either 00 for implicit (tz) or 01 for originated (KT)
If the first byte is 00 and we are working with an implicit (tz) address, then:
- The second byte describes the curve and therefore the prefix. This is either 00 (ed25519/tz1), 01 (secp256k1/tz2) or 02 (p256/tz3)
- The remaining 20 bytes is the address
If the first byte is 01 and we are working with an originated (KT) address, then:
- The next 20 bytes are the address
- The last byte is a 00 buffer (to pad the length to 22 bytes)
To convert the optimized form to an address, you can use eztz and do something like this:
function getAddressFromOptimized(hex){ var address, prefix; if (hex.substring(0,2) == "00") { if (hex.substring(2,4) == "00") prefix = eztz.prefix.tz1; if (hex.substring(2,4) == "01") prefix = eztz.prefix.tz2; if (hex.substring(2,4) == "02") prefix = eztz.prefix.tz3; address = hex.substring(4,44); } else if (hex.substring(0,2) == "01"){ prefix = eztz.prefix.KT; address = hex.substring(2,42); } return eztz.utility.b58cencode(eztz.utility.hex2buf(address), prefix); } console.log(getAddressFromOptimized("011cd5f135e80fd8ebb6e43335b24ca6116edeba6900"))
The format is documented here: http://tezos.gitlab.io/mainnet/api/p2p.html#contract-id-22-bytes-8-bit-tag
-
- 2019-02-02
Stephen Andrews eztz 라이브러리를 사용하여 다양한 도구에 액세스 할 수 있어야한다고 생각합니다.js 환경
b58cencode: function (payload, prefix) { const n = new Uint8Array(prefix.length + payload.length); n.set(prefix); n.set(payload, prefix.length); return library.bs58check.encode(new Buffer(n, 'hex')); }
I believe you should be able to make use of Stephen Andrews eztz library to access various tools from a js environment
I would speculate the function is this one where you use the KT prefix
b58cencode: function (payload, prefix) { const n = new Uint8Array(prefix.length + payload.length); n.set(prefix); n.set(payload, prefix.length); return library.bs58check.encode(new Buffer(n, 'hex')); }
-
대답 해줘서 고마워하지만 노력해 eztz.utility.b58cencode ( '011cd5f135e80fd8ebb6e43335b24ca6116edeba6900',eztz.prefix.KT) 그러면 나에게 "8RYhTWyrcLNgHVTCLfb3KP9TzGRZzttWK7CUJyYNLSDKNheB7CUJyYNLSD9XAp7CUJyYNLSD9"Ezy thanks for answer, but i try eztz.utility.b58cencode('011cd5f135e80fd8ebb6e43335b24ca6116edeba6900',eztz.prefix.KT) and this will return me "8RYhTWyrcLNgHVTCLfb3KP9TzGRZzttWK7CUJyYNLSD9xjpwC918e3BfpYBpwPBTy5UCi" not "KT1BDEn6wobs7tDReKkGheXAhoq278TGaNn5"
- 1
- 2019-02-02
- Михаил Магомедов
-
@ МихаилМагомедов 예,스티븐이 보여준 것처럼 그 함수를 호출하기 전에 추가 단계가 필요했습니다!@МихаилМагомедов yea sorry there were extra steps involved prior to calling that function as stephen showed!
- 1
- 2019-02-03
- Ezy
주소 값의 최적화 된 Micheline 표현을 디코딩하기위한 자바 스크립트 라이브러리를 아는 사람은 누구입니까?