Bitcoin Forum
April 25, 2024, 01:00:48 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Bitcoin Pseudo-Client and Documentation  (Read 3466 times)
Xenland (OP)
Legendary
*
Offline Offline

Activity: 980
Merit: 1003


I'm not just any shaman, I'm a Sha256man


View Profile
June 29, 2012, 03:22:41 AM
Last edit: July 31, 2012, 06:32:42 PM by Xenland
 #1

So I started a Pseudocode client, its more like documentation then it is as a client and its purpose is so any developer can check out the pseudo code and convert it to their chosen programming language. Here is what I have so far and will be adding more on to it as I have time and learn more. Anyone who has pseudo code to contribute please respond and we'll talk about it being added to the pages.
It looks primitive and sad right now but it will help a lot of developers with creating their own bit coin clients and understanding how current custom clients work(not to mention the satoshi client)

https://github.com/Xenland/Bitcoin-Pseudocode-Client/tree/gh-pages


(Work in progress Github PAGES http://xenland.github.com/Bitcoin-Pseudocode-Client/ )

Topics described
Verifying a Bitcoin address
Creating a Bitcoin address (Code finished, Explanation required)

The topics need to be written are:
*Query for a list of public Bitcoin nodes.
*Requesting information from other nodes (Should include instructions with all available current commands the official Bitcoin client accepts)
*Verifying the Block chain and individual blocks (Should include instructions on how to download/request blocks from other nodes)
*Mining Operations

1714050048
Hero Member
*
Offline Offline

Posts: 1714050048

View Profile Personal Message (Offline)

Ignore
1714050048
Reply with quote  #2

1714050048
Report to moderator
1714050048
Hero Member
*
Offline Offline

Posts: 1714050048

View Profile Personal Message (Offline)

Ignore
1714050048
Reply with quote  #2

1714050048
Report to moderator
The network tries to produce one block per 10 minutes. It does this by automatically adjusting how difficult it is to produce blocks.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1714050048
Hero Member
*
Offline Offline

Posts: 1714050048

View Profile Personal Message (Offline)

Ignore
1714050048
Reply with quote  #2

1714050048
Report to moderator
1714050048
Hero Member
*
Offline Offline

Posts: 1714050048

View Profile Personal Message (Offline)

Ignore
1714050048
Reply with quote  #2

1714050048
Report to moderator
Xenland (OP)
Legendary
*
Offline Offline

Activity: 980
Merit: 1003


I'm not just any shaman, I'm a Sha256man


View Profile
June 29, 2012, 08:42:44 PM
 #2

Almost done with the documentation on creating a Bitcoin address
http://xenland.github.com/Bitcoin-Pseudocode-Client/
Tachikoma
Hero Member
*****
Offline Offline

Activity: 938
Merit: 1000



View Profile WWW
June 29, 2012, 09:00:36 PM
 #3

This is a great idea. I noticed you are giving a way a bounty for contributions. How are you going to (fairly) divide those?

Electrum: the convenience of a web wallet, without the risks | Bytesized Seedboxes BTC/LTC supported
Xenland (OP)
Legendary
*
Offline Offline

Activity: 980
Merit: 1003


I'm not just any shaman, I'm a Sha256man


View Profile
June 29, 2012, 09:18:29 PM
 #4

This is a great idea. I noticed you are giving a way a bounty for contributions. How are you going to (fairly) divide those?

I have thought of a quite a few ways but I haven't quite decided yet. I'm open to suggestions. There will almost more then liekly BTC in the future to give to more contributors, I just wanted to attract others to help contribute knowledge first before I decided.

The less work I have to do the better they will be compensated.

I noticed the bitcoin client information on how its mechanisms is scattered around and is almost always describing it at all different angles(Gets boring quick when attempting to research or develop).
For instance the description of a Bitcoin address not only involved the mechanisms on generating an address but also described the benefits and pitfalls of it in real world applications saying things like "Bitcoin address is like an email address", or "Bitcoin addresses are small enough to fit on QR codes"; You know things that are not developer related.

So my aim here is to acknowledge that the developer reading about Bitcoin client mechanism is already sold on using it now they just need to get to work on developing it and not spend so much "research hours" memorizing everything.

Basically: My vision for this documentation project is so a developer can click on the subject like "Create a Bitcoin address" and learn how to create a Bitcoin address just by reading one page. The developer then can do all the work in converted the pseudo code mechanisms to their selected programming language. (I sound like a broken record i know but I feel it helps get my point across)
Tachikoma
Hero Member
*****
Offline Offline

Activity: 938
Merit: 1000



View Profile WWW
June 29, 2012, 09:46:57 PM
 #5

If you can find a good system to reward people who contribute to the project I will be willing to pledge some coins as well. At this point I wouldn't know how to "rate" the work and divide the reward fairly, I will watch this topic and see what happens Smiley

Electrum: the convenience of a web wallet, without the risks | Bytesized Seedboxes BTC/LTC supported
Xenland (OP)
Legendary
*
Offline Offline

Activity: 980
Merit: 1003


I'm not just any shaman, I'm a Sha256man


View Profile
June 30, 2012, 12:49:06 AM
 #6

If you can find a good system to reward people who contribute to the project I will be willing to pledge some coins as well. At this point I wouldn't know how to "rate" the work and divide the reward fairly, I will watch this topic and see what happens Smiley
That might be why nobody wants to contribute; the incentive is unknown.

What about 1BTC (+Tachikomas' rate)  for every mechanism written in detail.
The details should include at a minimum of two first formats.
1st format is a general description of the steps necessary to achieve the subject mechanism
2nd format is a pseudo code example of how the mechanism is performed.
(Pseudo code Standard: http://users.csc.calpoly.edu/~jdalbey/SWE/pdl_std.html )
3rd format(optional): Example how to do it in a applicable programming language(PHP, Java, JS Actionscript, LOLCODE)

Sources are required.
Pseudo code is required. (Styling is optional)

The topics need to be written are:
*Create a Bitcoin address (Already started but I don't have time to finish it yet someone could get easy BTC with this.)
*Query for a list of public Bitcoin nodes.
*Requesting information from other nodes (Should include instructions with all available current commands the official Bitcoin client accepts)
*Verifying the Block chain and individual blocks (Should include instructions on how to download/request blocks from other nodes)


I hope i didn't forget anything
mskwik
Full Member
***
Offline Offline

Activity: 125
Merit: 100


View Profile
June 30, 2012, 01:10:21 AM
 #7

I would note that your Bitcoin address verification is incomplete, to actually fully verify that an address is valid you would also need to base58-decode the address and check the checksum.  In general I wouldn't worry about checking the length/first character before decoding since you can easily check the exact length and network ID byte after decoding as well as easily verifying private keys or other types of addresses with very nearly the same code, but I suppose that's up to personal preference since the 00 mainnet byte does always give a 1 at the beginning of the encoded address.

Xenland (OP)
Legendary
*
Offline Offline

Activity: 980
Merit: 1003


I'm not just any shaman, I'm a Sha256man


View Profile
June 30, 2012, 01:47:07 AM
 #8

I would note that your Bitcoin address verification is incomplete, to actually fully verify that an address is valid you would also need to base58-decode the address and check the checksum.  In general I wouldn't worry about checking the length/first character before decoding since you can easily check the exact length and network ID byte after decoding as well as easily verifying private keys or other types of addresses with very nearly the same code, but I suppose that's up to personal preference since the 00 mainnet byte does always give a 1 at the beginning of the encoded address.
Thanks for the input, I'll be sure to look into that when I have time. If memory serves, I concluded base58 is really just alphanumerical string with out the 4 letters. I couldn't find any detailed information on the check sums to conclude it was required(or added any significance) to validate an address. Maybe if you could explain the processes of decoding that is required to validate. (As my examples shows you may not have to display how a SHA256() hash operation works that’s a little TOO detailed)

If you want the BTC just take what I started with for the incomplete subject and rewrite/append to it. and post it here.

Rules Are
The details should include at a minimum of two first formats.
1st format is a general description of the steps necessary to achieve the subject mechanism
2nd format is a pseudo code example of how the mechanism is performed.
Xenland (OP)
Legendary
*
Offline Offline

Activity: 980
Merit: 1003


I'm not just any shaman, I'm a Sha256man


View Profile
June 30, 2012, 02:04:24 AM
 #9

Looking at php decode encode base58 scripts i guess it isnt just removal of letters i overlooked it none the less dont have time to desrcibe the procceses for the next week or so
mskwik
Full Member
***
Offline Offline

Activity: 125
Merit: 100


View Profile
June 30, 2012, 02:54:02 AM
 #10

Don't really have the time right now to write it up properly myself either, just kind of wanted it noted before someone else following your documentation gets mixed up on the same thing.  For the record there are implementations of full address checking in a couple different languages in this thread:

https://bitcointalk.org/index.php?topic=1026.0

Xenland (OP)
Legendary
*
Offline Offline

Activity: 980
Merit: 1003


I'm not just any shaman, I'm a Sha256man


View Profile
July 01, 2012, 02:45:52 AM
 #11

 Grin
Xenland (OP)
Legendary
*
Offline Offline

Activity: 980
Merit: 1003


I'm not just any shaman, I'm a Sha256man


View Profile
July 01, 2012, 06:26:00 AM
 #12

The first person to submit the first report will get 1BTC more then usual. so that’s 2 Bitcoins total.

Here is the main page: http://xenland.github.com/Bitcoin-Pseudocode-Client/index.html
and I fixed the verify bitcoin address page (but still needs some worked to be finished with) http://xenland.github.com/Bitcoin-Pseudocode-Client/index.html
Xenland (OP)
Legendary
*
Offline Offline

Activity: 980
Merit: 1003


I'm not just any shaman, I'm a Sha256man


View Profile
July 01, 2012, 04:14:18 PM
 #13

I've changed my mind, I'll just do it myself and pay people to verify the information. That might work better.
Xenland (OP)
Legendary
*
Offline Offline

Activity: 980
Merit: 1003


I'm not just any shaman, I'm a Sha256man


View Profile
July 02, 2012, 12:40:55 AM
 #14

Here is my PHP example script for checking for a valid address... Let me know if everything is valid. (Still in the process of updating the HTML pages to reflect the instuctions found in the example)
https://github.com/Xenland/Bitcoin-Pseudocode-Client/blob/gh-pages/examples/php/verify_bitcoin_address.php
Xenland (OP)
Legendary
*
Offline Offline

Activity: 980
Merit: 1003


I'm not just any shaman, I'm a Sha256man


View Profile
July 07, 2012, 04:19:29 AM
 #15

Gweedo was kind enough to donate their time to contributing to this project. Here is the java example for generating a Bitcoin address.

https://github.com/Xenland/Bitcoin-Pseudocode-Client/tree/gh-pages/examples/java

Thanks Gweedo!
YTMND!
Xenland (OP)
Legendary
*
Offline Offline

Activity: 980
Merit: 1003


I'm not just any shaman, I'm a Sha256man


View Profile
July 31, 2012, 06:32:26 PM
 #16

Still looking for volunteers
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!