Bitcoin/public point to address: Difference between revisions

Added zkl
(→‎{{header|Perl}}: Perl 6 translation)
(Added zkl)
Line 381:
16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM
</pre>
 
=={{header|zkl}}==
Uses shared library zklMsgHash.
<lang zkl>var MsgHash=Import("zklMsgHash");
 
const symbols = "123456789" // 58 characters: no cap i,o; ell, zero
"ABCDEFGHJKLMNPQRSTUVWXYZ"
"abcdefghijkmnopqrstuvwxyz";
 
fcn base58Encode(bytes){ //Data-->String
bytes=bytes.copy(); sink:=Sink(String);
do(33){
bytes.len().reduce('wrap(n,idx){
n=n*256 + bytes[idx];
bytes[idx]=(n/58);
n%58;
},0) : symbols[_] : sink.write(_)
}
sink.close().reverse();
}
 
const COIN_VER=0;
 
fcn coinEncode(x,y){ // throws if x or y not hex or (x+y) not even length
bytes:=(x+y).pump(Data,Void.Read,fcn(a,b){ (a+b).toInt(16) }).insert(0,4);
bytes=(MsgHash.SHA256(bytes,1,False):MsgHash.RIPEMD160(_,1,False))
.insert(0,COIN_VER);
chkSum:=MsgHash.SHA256(bytes,1,False):MsgHash.SHA256(_,1,False)[0,4];
base58Encode(bytes.append(chkSum));
}</lang>
<lang zkl>e:=coinEncode(
"50863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B2352",
"2CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6");
(e=="16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM").println();</lang>
{{out}}
<pre>True</pre>
 
 
{{omit from|Brlcad}}
Anonymous user