|Subject:||Feedback on CPAN Module Encode::Base58::GMP v1.00|
|Date:||Fri, 26 Jan 2018 21:59:45 +0000 (UTC)|
|To:||"bug-Encode-Base58-GMP [...] rt.cpan.org" <bug-Encode-Base58-GMP [...] rt.cpan.org>|
|From:||Ross Anderson <rua.webdesign [...] yahoo.co.uk>|
HiThank you very much for sharing your module Encode::Base58::GMP v1.00. I have encountered a slight problem with it relating to Base58 encoding for Bitcoin in that it produces a standard Bitcoin address without the leading '1' character, though otherwise correct. This is not really a 'bug' as you produce the correct Base58 encoding of the number passed in according to the Bitcoin alphabet, but the Bitcoin specification on Base58Check encoding (requires leading 1's to be prefixed, one for every 'leading zero' in the number passed in :- "The leading character '1', which has a value of zero in base58, is reserved for representing an entire leading zero byte, as when it is in a leading position, has no value as a base-58 symbol. There can be one or more leading '1's when necessary to represent one or more leading zero bytes. Count the number of leading zero bytes that were the result of step 3 (for old Bitcoin addresses, there will always be at least one for the version/application byte; for new addresses, there will never be any). Each leading zero byte shall be represented by its own character '1' in the final result." So the end result is probably unexpected for a user of this module in writing some code to be used with Bitcoin. Perhaps just a note would be helpful on the CPAN page warning the user to add their own '1' prefixes where needed if working with Bitcoin. Many thanksRoss Anderson System details :-Perl 5, version 12, subversion 3 (v5.12.3) built for MSWin32-x64-multi-threadWin7 Ultimate SP1 Attached test script : test-b.pl
Message body is not shown because sender requested not to inline it.