Overwritten chain

Hi devs,

Ok so, the chain is actually controled by 6 mining beneficiary addresses. We talked about this a lot, but they definitely made a miner making them to own the blockchain.

This centralization problem has a direct impact. I’ve been able (with luck) to find the block 804. Here is the original block data :

{"key_block":{"beneficiary":"ak_k1gwWUsYiixD3e6sgVXq8YKae7dLstVLXw9uRTUMpXfkUkJf5","hash":"kh_RtSEv1Uftcs2YGkyFCiwwt7yJsaAyU31Z6aGTUUcgPL7VWcWN","height":804,"miner":"ak_2Fqr7Tvyc2SJax27akQHXK9pLsYQQfBt6n7LzP7X3Ea7y9HFv","nonce":9261054517372676000,"pow":[9696700,10669065,23108090,24189767,32592709,38206718,42509702,53085048,60684609,64869116,74017215,75585125,101096727,107662144,108121875,108920997,140148809,160593974,202422279,241852233,251674650,267051717,270212171,305122838,309346909,321063170,322373948,332839643,333596132,348145215,358312127,373641657,403360910,418958496,427569811,432268467,433806516,445256259,448996793,502163544,509816972,511470833],"prev_hash":"kh_uCvz8eV6Z5Bx2bxXdJAUjeNdVsxxn3mcU67Ddkw6AghBpo74E","prev_key_hash":"kh_uCvz8eV6Z5Bx2bxXdJAUjeNdVsxxn3mcU67Ddkw6AghBpo74E","state_hash":"bs_1NqFTndSrFjGDxDkGHmbzQhii6UFTdx9zj7MgWFGEPifynu84","target":520692448,"time":1543511702535,"version":1},"micro_blocks":[],"_id":804}

The beneficiary address, ak_k1gwWUsYiixD3e6sgVXq8YKae7dLstVLXw9uRTUMpXfkUkJf5, is mine. The block has been validated and confirmed by 805, 806, and more.

Unfortunately, with the control of the chain, this block has now been overwritten. The beneficiary address has changed and is now ak_TFm6MPeRXz4oiy5rQ9QRsFpaQb27GCc5ZEXCDhCFPYvYWxV5v , one of the 6 addresses controling the mainnet.

So, mmm, what happened ? At block 980 yesterday, I was still owning block 804.

Hi lofino,

I see couple things coming into play here.

  1. Candidate creation
  2. Mining power
  3. Forks
  4. Gossip issue
  5. Selfish mining and rewriting history

Re 1. Candidate creation: Just short note that your candidate was created ~40 seconds after the “newer” 804 block

Re 2. That brings us to mining power centralization: as you say it’s totally not balanced in roma network and you have probably less mining capacity and your key block candidate was created later. It means that in global view your mined block was probably mined later

Re 3. We confirmed (you can do as well) that it’s legit fork and we have it in internal full nodes chain_state service

Re 4. The issue could be escalated by an issue in gossip algorithm that we are addressing and preparing update release

Re 5. I doubt that we have case of selfish mining - because you report that for so long your block was in. Also rewriting the whole chain doesn’t make economical sense, because we have very little amount of transactions, so double spend is not a motivation. The resources could have been dedicated to mining next 180 blocks instead rewriting past 180 blocks just to overwrite 1 key block.

To conclude, I think the culprit is unefficent gossip that we are going to fix soon and the fact that you were at disadvantage from the very beginning in network penetration.

2 Likes

Which doesn’t feel like an issue an actual mainnet should be having.

I want to be positive so I still feel this mainnet is actually the first kind of pseudo-rewarded testnet.

Software in general shouldn’t have bugs. Unfortunately this issue didn’t surface in our testnet.
We fix - as we speak - by configuration. Next week we will fix with the next release.

I think the same thing happened to me:

2018-12-01 03:45:57.842 [info] <0.1266.0>@aec_conductor:handle_mined_block:847 Block mined: Height = 1382; Hash = 034e8962877c1128df02300fffd1b43091bd56deda55603e5098434cba0d3d7c

This is my mining log. Now when I check the Block 1382 on the explorer - somebody else has mined the Block.

https://explorer.aepps.com/#/generation/1382

Curiously, the address that mined the Block has no AE on it … ?

What we are expereincing is forks and they are completely expected. We can improve the gossip protocol so information propagates a little bit faster, but in a decentralized network we can not prevent forks. A havier chain will indeed overwrite a lighter one.
This is not a bug and will require some time for the network to mature. That’s why you are not advised to move your tokens around - because transactions can easily end up in a fork. Still - if you want to - you can do it. I had received and send tokens from my address. A friend of mine had registered a name. We’ve started a state channel.
Software is working as expected but the network itself is just too young and needs more democratization and more decentralization. We can not and should not do this, it is up to all of you to join and mine.

2 Likes

Kinda hard to join and mine when there are no in place things to use multiple gpus, a propper pool, stratum, or even a portable miner for windows/arm systems.

1 Like

Hey, some of those are just behind the corner. I believe the multi GPU miner is in a branch now, being polished as we speak. Soon after it there will be a windows port. Some great people are making it happen and we are working really hard. So far our main focus had been finalizing the protocol for roma_net. Now we will focus on better tooling for an easier adoption. Stay positive :slight_smile:

Regarding ARM port - it will not have enough computing power to mine so an ARM miner had not reall been a priority. You can still have a non-mining ARM node in order to help the network grow. I will certainly do so. I don’t have my Pi with me now so I can not confirm it will work just out of the box.

what we are experiencing is some people with an unfair edge. Aeternity should have created decent mining tools and open sourced pooling software. I’m kinda disappointed by the way things got released and the effects its having right now.

1 Like

Cuckoo mining and stratum endpoints are know for a long time now. The software is open source and everyone can develop its own miner and pools. As seen in many other projects software develops day by day and from my point of view it’s quite nomal that there are professional miners who might have developed close source or just have an ridiculous amount of mining power.

We absolutely welcome people who want to participate in the development of aeternity and the development of open source public software. If anyone wants to help us they should please get in touch and we’re more than happy to onboard them building better software for everyone. If you read this or if you know someone who would be beneficial for the aeternity software and community write an email to [email protected] or any other team members.

aeternity “should have” is all of us. We are on the same side here and we are looking forward to onboard more people to deliver all of the requested bits and pieces for our community.

2 Likes

The BlockExplorer displays the “miner” field rather than the “beneficiary”, the “miner” field contains a throw away key only used for that generation so the balance of that “account” is expected to be 0 :slight_smile:

1 Like

So the Blockexplorer needs work :man_farmer:

1 Like

Yes it is open source, yes everyone could develop own miners and own pools.
If I could I would, i’m actively trying to get some devs interested in making something for it. So i’m doing my part.

You can’t ignore that the current state is actually making the chain unsafe, due to centralized mining. I’m not saying chain data is being overwritten, but it could be possible.

I have a fair amount of GPU power myself, did manage to find a block now and then but if I compare my blockfinds with those of the few “big” ones it should be bizar huge farms, something that I don’t expect in this stage. They are mining with much more efficient software, making the playing field unfair to begin with. Where it is in Aeternity’s best interest to level this playing field as much as possible from the start, thought that was kinda the idea.

Strong believes is what I always had for Aeternity and still have, but this problem should be addressed sooner rather then later.

2 Likes

The whole point of mining is that you participate in supporting the network, it is not about getting free money for doing nothing. Hashing is only a part of this job. Figuring out what to actually hash on is crucial.

And it has always been one of the core problems for miners of any blockchain including Bitcoin how to decide on the correct chain quickly and minimize time wasted on dead forks.

I tried compiling epoch and, obviously, it died at the miner part. But I don’t want it to mine, i want it to keep the network distributed.

emin, I also have a lot of gpu hashing power, but seems pointless to try it because of how inefficient it is.

Keeping the network decentralized is part of the prerrogative of aeternity, it was also the ability to mine from your phone while charging (a phrase used by tromp on his presentation)

2 Likes

Yes, the miner’s binaries are used both for mining and for verification of incoming block’s proof of work. So you do need those binaries even if not mining but just for verification. The ARM support is not out there yet.
As the network matures and more miners join in, an incentive will be created to rather lend the proprietary miner software for 2-5% of the reward. This is quite common, and this is actually a good way of reaching decentralization.

Edit: You do not need the miner for verification. See here

Sure, but there are still some compilation errors on ubuntu in Arm 18.04.1 . speicifically an otp error i can’t find a solution for so far.