Bitcoin Forum
November 08, 2024, 03:14:22 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 3 4 5 »  All
  Print  
Author Topic: [ANN] BitEN - bitcoin erlang node  (Read 6899 times)
This is a self-moderated topic. If you do not want to be moderated by the person who started this topic, create a new topic.
r.willis (OP)
Jr. Member
*
Offline Offline

Activity: 42
Merit: 11


View Profile
March 20, 2013, 06:28:09 PM
Last edit: March 24, 2013, 05:47:39 PM by r.willis
Merited by ABCbits (11)
 #1

Hello all!
For some time I was working on bitcoin daemon implementation in erlang.
Now it's in the early stage of development. I'm trying to implement protocol not looking into bitcoind source, but using specification from https://en.bitcoin.it/wiki (found one bug so far), original paper and looking at the protocol messages which I get from peers.

My goal is to make scalable bitcoin daemon, capable of serving many thousands of peers on relatively low-end servers.
At current state it's capable of connecting and parsing messages from 3000+ peers on 256M RAM VPS without swap. It does not do much besides protocol parsing and peer discovery now, but it's only several days old. Chances are that it connected to your machine - check for /ebtcd:0.0.1/ user-agent in logs.
Short term pans: accept incoming connections, announce own address via addr message.
Mid term plans: add validation and routing (test on testnet), release source under open license (AGPL sounds good).
Long term: full-featured daemon.

P.S. In case someone wants to encourage me with some BTC, I set up donation adress:
1GVmS56pvVL7YZA7YqMBXmaDedCoputKuJ

UPD:
git clone git://github.com/r-willis/biten.git
gweedo
Legendary
*
Offline Offline

Activity: 1498
Merit: 1000


View Profile
March 20, 2013, 06:30:03 PM
 #2

Any chance you going to put it on gihub?
kokjo
Legendary
*
Offline Offline

Activity: 1050
Merit: 1000

You are WRONG!


View Profile
March 20, 2013, 06:33:23 PM
 #3

please make the source public, og remove [ANN] from the thread subject... i was expecting to see awesome code, but was disappointed.

"The whole problem with the world is that fools and fanatics are always so certain of themselves and wiser people so full of doubts." -Bertrand Russell
r.willis (OP)
Jr. Member
*
Offline Offline

Activity: 42
Merit: 11


View Profile
March 20, 2013, 06:48:44 PM
 #4

please make the source public, og remove [ANN] from the thread subject... i was expecting to see awesome code, but was disappointed.
You are right, so [ANN] gone for now.
Code is in no way awesome now. It's a bunch of loosely connected modules and processes. Current code is proof-of-concept that you can make "very-well-connected" node on low-end virtual server. Right now I'm converting code to OTP (Erlang framework for robust, industrial-grade applications).
I'd expect code release in a week or two.
Why I (we) want node with many peers? Because it greatly reduces network "diameter", reduces propagation times, helping miners and makes many attacks not feasible.
But if it does not verify transactions/blocks it relays, I effectively becomes threat to network, as if there is many such nodes, spammers can use them to amplify their abilities to flood nodes with malformed/fraudulent transactions.  
kokjo
Legendary
*
Offline Offline

Activity: 1050
Merit: 1000

You are WRONG!


View Profile
March 20, 2013, 06:56:39 PM
 #5

But if it does not verify transactions/blocks it relays, I effectively becomes threat to network, as if there is many such nodes, spammers can use them to amplify their abilities to flood nodes with malformed/fraudulent transactions.  
i don't think so... the satoshi client have some ban system, if your node began to send malformed txs they would just disconnect from your node.

"The whole problem with the world is that fools and fanatics are always so certain of themselves and wiser people so full of doubts." -Bertrand Russell
grau
Hero Member
*****
Offline Offline

Activity: 836
Merit: 1030


bits of proof


View Profile WWW
March 20, 2013, 07:16:21 PM
 #6

Now it's in the early stage of development. I'm trying to implement protocol not looking into bitcoind source, ...

From this I can tell that this must be really early stage. Keep up, but be prepared for a very long trip.
Unfortunately documentation available is very far from being sufficient input for an implementation, and in Bitcoin world there is no half-way compatibility.
r.willis (OP)
Jr. Member
*
Offline Offline

Activity: 42
Merit: 11


View Profile
March 20, 2013, 07:56:24 PM
 #7

i don't think so... the satoshi client have some ban system, if your node began to send malformed txs they would just disconnect from your node.
Of course it has, but it but before it kicks in, you can spend several megs of some someone's bandwidth. Multiply by some thousands peers, and by number of servers (whatever it is). I just not very comfortable with this.
Keep up, but be prepared for a very long trip.
Yes, I read your thread about bitsofproof. I hope it will be interesting journey.
kokjo
Legendary
*
Offline Offline

Activity: 1050
Merit: 1000

You are WRONG!


View Profile
March 20, 2013, 07:59:45 PM
 #8

i don't think so... the satoshi client have some ban system, if your node began to send malformed txs they would just disconnect from your node.
Of course it has, but it but before it kicks in, you can spend several megs of some someone's bandwidth. Multiply by some thousands peers, and by number of servers (whatever it is). I just not very comfortable with this.
and you should not be, but its still safe to experiment, the bitcoin network is robust(at least the satoshi client is...)

i am also devloping a bitcoin client, pycoin. although i have not done much lately on it.

"The whole problem with the world is that fools and fanatics are always so certain of themselves and wiser people so full of doubts." -Bertrand Russell
r.willis (OP)
Jr. Member
*
Offline Offline

Activity: 42
Merit: 11


View Profile
March 20, 2013, 08:08:00 PM
 #9

If you think so, I can implement routing and release code. Let's stress-test network.
I think on 8Gb (right now, without optimisations) machine daemon can connect to every connectable node in network (I estimate it's around 60k peers) + some incoming connections.
jgarzik
Legendary
*
qt
Offline Offline

Activity: 1596
Merit: 1100


View Profile
March 21, 2013, 02:14:40 AM
 #10

i am also devloping a bitcoin client, pycoin. although i have not done much lately on it.

If you like python, check out https://github.com/jgarzik/python-bitcoinlib/ and the bitcoin client that uses it, https://github.com/jgarzik/pynode/

I'm trying to encourage everyone to use python-bitcoinlib for their python projects.  It fully verifies the blockchain, and passes many reference client tests.


Jeff Garzik, Bloq CEO, former bitcoin core dev team; opinions are my own.
Visit bloq.com / metronome.io
Donations / tip jar: 1BrufViLKnSWtuWGkryPsKsxonV2NQ7Tcj
meowmeowbrowncow
Sr. Member
****
Offline Offline

Activity: 322
Merit: 250



View Profile
March 21, 2013, 02:17:50 AM
 #11

i am also devloping a bitcoin client, pycoin. although i have not done much lately on it.

If you like python, check out https://github.com/jgarzik/python-bitcoinlib/ and the bitcoin client that uses it, https://github.com/jgarzik/pynode/

I'm trying to encourage everyone to use python-bitcoinlib for their python projects.  It fully verifies the blockchain, and passes many reference client tests.





And that Python, generally, is cool.


Wink

"Bitcoin has been an amazing ride, but the most fascinating part to me is the seemingly universal tendency of libertarians to immediately become authoritarians the very moment they are given any measure of power to silence the dissent of others."  - The Bible
aantonop
Full Member
***
Offline Offline

Activity: 196
Merit: 116


Entrepreneur, coder, hacker, pundit, humanist.


View Profile WWW
March 21, 2013, 03:09:27 AM
 #12

Very interesting.

You should open source even if it is early stage, please! I'd love to

I've done some Erlang and OTP and I'm looking at core-daemon (full node) implementations.

Don't be shy, open it!

Bitcoin entrepreneur - OpenBitcoinStore,SafePaperWallet,BitcoinPressCenter.org... and more.
Host on LetsTalkBitcoin.
kokjo
Legendary
*
Offline Offline

Activity: 1050
Merit: 1000

You are WRONG!


View Profile
March 21, 2013, 06:45:54 AM
 #13

i am also devloping a bitcoin client, pycoin. although i have not done much lately on it.

If you like python, check out https://github.com/jgarzik/python-bitcoinlib/ and the bitcoin client that uses it, https://github.com/jgarzik/pynode/

I'm trying to encourage everyone to use python-bitcoinlib for their python projects.  It fully verifies the blockchain, and passes many reference client tests.


i have been looking at thats python codes before. but it does not seem 'pythonic', but the script parts of the code i have found helpful.

"The whole problem with the world is that fools and fanatics are always so certain of themselves and wiser people so full of doubts." -Bertrand Russell
r.willis (OP)
Jr. Member
*
Offline Offline

Activity: 42
Merit: 11


View Profile
March 21, 2013, 11:38:21 PM
 #14

Conversion to OTP mostly done.
Plans for tomorrow: limit rate at which outgoing connections are created. After this, accept incoming connections and advertise own address via addr message.
kokjo
Legendary
*
Offline Offline

Activity: 1050
Merit: 1000

You are WRONG!


View Profile
March 22, 2013, 06:53:00 AM
 #15

Conversion to OTP mostly done.
Plans for tomorrow: limit rate at which outgoing connections are created. After this, accept incoming connections and advertise own address via addr message.

and then: github

"The whole problem with the world is that fools and fanatics are always so certain of themselves and wiser people so full of doubts." -Bertrand Russell
r.willis (OP)
Jr. Member
*
Offline Offline

Activity: 42
Merit: 11


View Profile
March 22, 2013, 07:41:20 AM
 #16

Before github, I need cool name for project. Any ideas?
kokjo
Legendary
*
Offline Offline

Activity: 1050
Merit: 1000

You are WRONG!


View Profile
March 22, 2013, 10:58:27 AM
 #17

Before github, I need cool name for project. Any ideas?
"The first and only true bitcoin erlang deamon" or TFAOTBED?

"The whole problem with the world is that fools and fanatics are always so certain of themselves and wiser people so full of doubts." -Bertrand Russell
meowmeowbrowncow
Sr. Member
****
Offline Offline

Activity: 322
Merit: 250



View Profile
March 22, 2013, 01:14:14 PM
 #18

Before github, I need cool name for project. Any ideas?
"The first and only true bitcoin erlang deamon" or TFAOTBED?


How about:

The Committee for the Liberation and Integration of Terrifying Organisms and their Rehabilitation Into Society




CLITORIS

(had to, sorry Cheesy)

"Bitcoin has been an amazing ride, but the most fascinating part to me is the seemingly universal tendency of libertarians to immediately become authoritarians the very moment they are given any measure of power to silence the dissent of others."  - The Bible
r.willis (OP)
Jr. Member
*
Offline Offline

Activity: 42
Merit: 11


View Profile
March 22, 2013, 03:00:55 PM
 #19

It's hilarious... I'll consider it.
r.willis (OP)
Jr. Member
*
Offline Offline

Activity: 42
Merit: 11


View Profile
March 22, 2013, 10:32:20 PM
Last edit: March 23, 2013, 06:11:13 AM by r.willis
 #20

System is live at 192.210.207.147:8333
Accepts connection and does handshake. Nothing fancy yet. Transaction routing and block download/serving are next.
Pages: [1] 2 3 4 5 »  All
  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!