Pages:
Author

Topic: Gocoin - totally different bitcoin client with deterministic cold wallet (Read 38686 times)

legendary
Activity: 2053
Merit: 1356
aka tonikt
No, thanks.
Because I have no good way to do an actual mining, so I wouldn't be able to maintain it with an acceptable quality.

I did add some simple mining API to cheat-mine testnet coins with the old GPU miners, but that's not something I want to advertise or encourage people to use.
One cyber punk already fucked up testnet3 trying to impress people with his testnet hacking skills and I would like testnet4 to stay useful for a bit longer, before another genius decides to shit all over it. Smiley
member
Activity: 7
Merit: 0
It's never going to have identical features as Bitcoin Core - that was never the point.

There are some BC features that will likely never be implemented (e.g. bloom filters)
And there are some original Gocoin features the BC will likely never implement (e.g. trusted peers)

At the other hand, there are some feature BC has that are still supposed to be added (e.g. IP v6 support), although there is no roadmap for them.

The mining API is certainly a big missing feature, but since there is nobody interested in mining with Gocoin, it's pointless to add and then maintain it.


EDIT:
That said, all the blockchain consensus/verification rules are 100% implemented and up to date, and there are no known compatibility differences there between gocoin and bitcoin core. All the differences are not consensus related (e.g. P2P protocol or UI features).


Got it. I made some improvments to the mining, if you want i can send it to you
legendary
Activity: 2053
Merit: 1356
aka tonikt
It's never going to have identical features as Bitcoin Core - that was never the point.

There are some BC features that will likely never be implemented (e.g. bloom filters)
And there are some original Gocoin features the BC will likely never implement (e.g. trusted peers)

At the other hand, there are some feature BC has that are still supposed to be added (e.g. IP v6 support), although there is no roadmap for them.

The mining API is certainly a big missing feature, but since there is nobody interested in mining with Gocoin, it's pointless to add and then maintain it.


EDIT:
That said, all the blockchain consensus/verification rules are 100% implemented and up to date, and there are no known compatibility differences there between gocoin and bitcoin core. All the differences are not consensus related (e.g. P2P protocol or UI features).
member
Activity: 7
Merit: 0
It is being actively maintained, occasionally some new features are added.

See the changelog.txt for the recent changes.


Thanks, but i meant more a status of the completness of it versus bitcoin core. What features it has implemented, and what it lacks.
legendary
Activity: 2053
Merit: 1356
aka tonikt
It is being actively maintained, occasionally some new features are added.

See the changelog.txt for the recent changes.
member
Activity: 7
Merit: 0
This is a very nice project, I started working on it and adding features by the way, like verification of blocks (currently newly mined block hashes aren't being checked but just trusted), cleaner code and multi-chain functionalities, (for creating altcoins, etc).

I wonder if i can get an official statement about the current project status from its creator,

Thanks in advanced
legendary
Activity: 1176
Merit: 1011
try deleting the peers3 folder.

it keeps the database of your known peers, but the node will find new ones as soon as it's up.
Thanks, it seems to be working again!

Maybe it would be a good addition to auto delete or re-generate this file or dir if it's corrupt or missing? That way, if this situation would ever occur for some reason, Gocoin can still continue.

It's just never happened to me that this DB would get corrupt.

If you can find a way to reproduce the issue, I can investigate then and find the best fix for the problem.
I haven't been able to reproduce it, the problem did not show up anymore. Possibly it was due to a sudden system shutdown (electricity failure), perhaps on a very unlucky moment, which caused a DB corruption.

Anyway if I encounter the problem again I will see if I can investigate anything. So far Gocoin is working great!
newbie
Activity: 85
Merit: 0
Ok, I have returned to working on it... I got a full node of another chain running and set this node as sole peer of the altered prototype. Now it reports bad header formats and PoW, as it should since the coin I am altering the client to work with has two - and an extra byte in the block header to signify which PoW is used on a block.

I have to do some forensics on the blocks of the foreign chain, split the logic so there is two PoW difficulty consensus values and the recognition of valid PoWs, but I am making significant progress. I most likely will, at the end of this process, be able to precisely point at which parts have to be changed to cope with a different network, and which for different chains, I have the idea of shifting all those functions and settings into a separate library so it becomes possible to quickly target a new PoW coin using the Gocoin codebase.

https://github.com/ParallelCoinTeam/duod

There is a working docker version of the circa 2014 parallelcoin in there, likely you could easily substitute any other for this purpose. I set the configuration from the gocoin side to connect only to this docker instance. After it grabs 20 incorrectly formatted blocks it complains and stops syncing for a bit, tries again, complains again... If you changed which coin was built in this you could make it work, change genesis block info, PoW verification, difficulty adjustment policies, etc.
legendary
Activity: 2053
Merit: 1356
aka tonikt
try deleting the peers3 folder.

it keeps the database of your known peers, but the node will find new ones as soon as it's up.
Thanks, it seems to be working again!

Maybe it would be a good addition to auto delete or re-generate this file or dir if it's corrupt or missing? That way, if this situation would ever occur for some reason, Gocoin can still continue.

It's just never happened to me that this DB would get corrupt.

If you can find a way to reproduce the issue, I can investigate then and find the best fix for the problem.
legendary
Activity: 1176
Merit: 1011
try deleting the peers3 folder.

it keeps the database of your known peers, but the node will find new ones as soon as it's up.
Thanks, it seems to be working again!

Maybe it would be a good addition to auto delete or re-generate this file or dir if it's corrupt or missing? That way, if this situation would ever occur for some reason, Gocoin can still continue.
newbie
Activity: 85
Merit: 0
I just wanted to report on my experiences forking. I actually searched through all the 100 other forks and nobody really did anything. So I basically really was doing something that had not been done before.

I was able to change the majority of chain parameters and use different DNS seeds but for a reason I have not yet been able to determine, the peers on the other network refuse to grant auth to my modified gocoin node. I mean, it is significantly different, there is two PoW types in the network I am trying to join it to. The gocoin client doesn't even report the IP addresses in the interface of the nodes it's trying to connect to in the network section. I added extensive trace logging to many functions and these revealed the IP addresses but to be honest I don't know for sure if they were even correct from the DNS seed.

I kinda had hoped that configuration would be more centralised but instead there is about 3 or maybe more different places in the source that have to be changed and those that I have identified, and changed to match the other network were not enough to get peers seeding blocks to my node.

It's not a complaint, per se, or a request or anything like that. It's just a very nice bitcoin client and I thought it would not be so difficult to make it talk to a network based very closely on bitcoin (parallelcoin) and really quite old, so old that building the binary is a maze of ancient dependencies.

I understand that you build this mainly for your own benefit, so your needs are necessarily quite different being a well seasoned blockchain dev. Anyway, it's a very nice thing you made, just seems to be a bit too different for me to be able to figure out how to get it to connect to a different but basically bitcoin-based network.
legendary
Activity: 2053
Merit: 1356
aka tonikt
try deleting the peers3 folder.

it keeps the database of your known peers, but the node will find new ones as soon as it's up.
legendary
Activity: 1176
Merit: 1011
I have been running GoCoin for a while but I my server has been down for a few weeks. Now I'm restarting everything, but GoCoin says:

Quote
Database corrupt - missing file: ~/.bitcoin/gocoin/btcnet/peers3/8c14fbfe.dat

I haven't changed anything or deleted any files whatsoever. I already updated to the lastest revision (head) from github but still the same problem.

Is there anything I can do? Can I tell GoCoin to just re-download that particular file, whatever it may be? I assume it's something from the blockchain so it should be able to get that data from the network?
newbie
Activity: 85
Merit: 0
Wow, 103 forks! Yeah, as a golang fiend your code was a breath of fresh air after so much tangled C++.

If there is money for the project my fork is building up from this base with, I will definitely contact you if you would be interested in helping maintain and expand the codebase of the fork and pay you for it, I am very impressed.

I have been studying the situation with proof of work and ASICs intensively lately and it's my opinion the problem is simply that nobody has been writing puzzles that require the strengths of CPU or GPU processors. The PoW for the fork of Gocoin will be one that is designed to require strong database processing capabilities, which is exactly what a CPU is good for (lists and trees). Also I am precisely following an issuance model that mimics precious metals.

Oh and yes, there will never be any registered Calibrae corporation. People will probably need to for setting up liquidity pools for the distributed exchange but that is peripheral and for this my project is intended to be a protocol for doing business, not a business in itself.
legendary
Activity: 2053
Merit: 1356
aka tonikt
No worries - I'm rather an anarchist and I think that "intellectual property" is a scam invented by corporation to monopolise their profits.
You don't need to have moral issues and I'm not going to sue you for changing my code and making a few bucks on it.
The non-for-business-use license is solely there to prevent big IT corporations from taking my work, repackaging and reselling it to big financial corporations for billions while leaving me no credit.

I'm glad you found my work helpful and good luck with your project.

p.s.
The repo has 103 forks - I wouldn't have time to follow them Smiley
newbie
Activity: 85
Merit: 0
Firstly, I just want to say, what a beautiful piece of software you have made Piotr! I never heard about it and I had already looked at btcd and as soon as I saw yours running I wanted no more of btcd.

I am forking the code quite heavily, a bit more than a regular altcoin fork, the reward formula will be based on exponential decay, and because of this also I can eliminate transaction fees, but I have to massively increase the precision of the coin denomination (I think it will have 12 whole number places and 64 decimals) and I am switching out siphash for highwayhash, and secp256k1 for ed25519 and a block time of 1 minute and bigger blocks.

I noticed that the code makes golint put a lot of squiggly green lines on my VScode editor display, I suppose Go's idiom has changed significantly since 2013. I will be reworking a lot of the code, but compared to working with regular C++ based cryptocurrency nodes your code is a pleasure to read, and the web interface is beautiful, and so informative. I will be watching the repository for when you complete segwit multisig, and probably it will be a month or two before I am testing it. I will also probably add a gRPC interface to it to make it easier to plug into other applications also.

I am quite sure that it will be greatly changed compared to the original but you will be most welcome to use any changes or additions I make outside of the core protocol parts. I think the web interface could be expanded to the point where it is as feature laden as bitcoin-qt, at  option, with a nice Angular/Material skin on it.

In case you are concerned about my intended use, it will not be for a business, but rather as a base token for a larger protocol based on the SporeDB BFT database replication protocol, including a DEX, forum, chat system, git repository and hopefully from there it becomes a way for programmers to get paid without having really a boss (using a reputation system and rewards distribution similar to Steem). I thought it would be a nice, and fair way, to make it open yet provide enough possible money available for developing my larger project further. I am changing the proof of work algorithm also, and I have mostly designed the underlying sort/search protocol for a variant of Cuckoo Cycle, that massively exploits data cache locality and memory block alignment which potentially could mean not much possible improvement compared to a CPU because of cache memory being a very large component of the cost of production of processors. So hopefully it will be a coin that people can mine without sudden increases in network hashrate as recently happened to Sia, Monero and all the equihash coins.

Anyway, very nice work, and I wish more programmers wrote code like you, it would make the cryptocurrency space so much more vibrant.

You may have already noticed, if github tells you when someone has forked your repository, but this is what I have done so far, though I have been busy with other work for a few days and haven't finished yet writing the ultra precision math library that will be needed for my changes, hopefully tomorrow I can start again. https://github.com/calibrae-project/spawn
newbie
Activity: 73
Merit: 0

 
Show them your work. Maybe you can get a consultancy gig.
legendary
Activity: 2053
Merit: 1356
aka tonikt
Sorry, I don't know.

As I said, I don't have a mac, so maybe just ask someone who does.

Otherwise, use the binary I gave you - if it prints the help, everything else should also work.
newbie
Activity: 7
Merit: 0
So I ran GOOS=linux GOARCH= arm go build and it built a wallet.

I put it on the pi and all the commands are saying illegal instruction. I then tried export GOOS=linux export GOARCH=arm go build and it didn't build anything. Sorry this is such a pain, thanks again
legendary
Activity: 2053
Merit: 1356
aka tonikt
I really don't know, never had a mac.

But I imagine it has bash shell, in which case it should work if you just "cd" to the "gocoin/wallet" folder and execute there:
Code:
GOOS=linux GOARCH=arm go build

otherwise:
Code:
export GOOS=linux
export GOARCH=arm
go build
Pages:
Jump to: