June 2018 Update
This commit is contained in:
parent
ba8067c3b7
commit
22f33d4004
5278 changed files with 84726 additions and 14379 deletions
|
|
@ -1,26 +1,36 @@
|
|||
{{omit from|Brlcad}}
|
||||
{{omit from|GUISS}}
|
||||
|
||||
|
||||
;Task:
|
||||
Write a program that takes a [[wp:bitcoin|bitcoin address]] as argument,
|
||||
and checks whether or not this address is valid.
|
||||
|
||||
A bitcoin address uses a base58 encoding, which uses an alphabet of the characters 0 .. 9, A ..Z, a .. z, but without the four characters 0, O, I and l.
|
||||
A bitcoin address uses a base58 encoding, which uses an alphabet of the characters 0 .. 9, A ..Z, a .. z, but without the four characters:
|
||||
:::* 0 zero
|
||||
:::* O uppercase oh
|
||||
:::* I uppercase eye
|
||||
:::* l lowercase ell
|
||||
|
||||
|
||||
With this encoding, a bitcoin address encodes 25 bytes:
|
||||
* the first byte is the version number, which will be zero for this task ;
|
||||
* the next twenty bytes are a [[RIPEMD-160]] digest, but you don't have to know that for this task: you can consider them a pure arbitrary data ;
|
||||
* the last four bytes are a checksum check. They are the first four bytes of a double [[SHA-256]] digest of the previous 21 bytes.
|
||||
|
||||
|
||||
To check the bitcoin address, you must read the first twenty-one bytes, compute the checksum, and check that it corresponds to the last four bytes.
|
||||
|
||||
The program can either return a boolean value or throw an exception when not valid.
|
||||
|
||||
You can use a digest library for [[SHA-256]].
|
||||
|
||||
Here is an example of a bitcoin address:
|
||||
|
||||
1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i
|
||||
;Example of a bitcoin address:
|
||||
<big>
|
||||
1AGNa15ZQXAZUgFiqJ2i7Z2DPU2J6hW62i
|
||||
</big>
|
||||
|
||||
It does not belong to anyone.
|
||||
It is part of the test suite of the bitcoin software.
|
||||
You can change a few characters in this string and check that it will fail the test.
|
||||
It doesn't belong to anyone and is part of the test suite of the bitcoin software.
|
||||
<br>You can change a few characters in this string and check that it'll fail the test.
|
||||
<br><br>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue