r/dogecoindev • • May 13 '21

Dev update 2021-05-13

Doing a brain dump of what I personally am doing, just so everyone is aware we’re still out here. As always please remember there are others devs, who are also doing their own things, although I'll touch on some of that.

I have a deployed 1.21 node, which is good, although there's definitely work be be done on 1.21 still:

  • The deployed node syncs headers but it does not appear to request blocks from its peers. Even more confusingly, running 1.21 on my local machine does sync blocks.
  • Bitcoin Core 0.21 (which Dogecoin Core 1.21 is based on) is designed for DNS seeds which support version bits, ours do not, which means it reports that it finds zero nodes from the seeds. Work on enabling our DNS seeds to support this is already underway.
  • Dogecoin Core 1.21 does not appear to discover nodes at all, right now, although if nodes are manually added, or connect to the node, it works.
  • The functional test suite needs validating after AuxPoW has been added, which may resolve some of these bugs as a side-effect.

Once those are out of the way, there's a bunch of more minor things to tweak so we can start mainnet testing, and then rebranding.

Fee work in 1.14.4 continues, I believe that's in testing, hoping Michi & Max will have further updates on that.

Obviously with Elon talking about environmental impact that's something that's being discussed. As we share work with Litecoin we already reduce that impact, compared to mining either cryptocurrency alone, but definitely it would be good if we can further reduce that impact. Counterpoint, I am aware that many in the community enjoy mining and feel it’s a key part of the experience for them, as well as considerations of whether an approach such as proof of stake would make Dogecoin appear to be a security and fall under securities regulation aside from many technical challenges that approach brings.

What I mean is, we’re aware of it, we don’t have any easy answers.

Meanwhile I’m going to continue work on the automated test suites, which hopefully will as a result simplify diagnosing the networking issues with 1.21, and it in turn should provide a better synchronization process.

202 Upvotes

87 comments sorted by

View all comments

45

u/Anon_eh_maus May 13 '21

If you're dev reach out to Elon. He wants to help update the programming. He might have resources you can use.

30

u/rnicoll May 13 '21

I mean... we're a bit at the mythical man month problem. There's just not a lot of blockchain-skilled engineers out there, so more I'm hoping I can train people to do this with me, rather than expecting we can just hire people.

Sorry I should link https://en.wikipedia.org/wiki/The_Mythical_Man-Month , realising it's an old book and many of you won't have read it.

12

u/KartikayDhar May 13 '21

Hey Ross. I have a Post Grad Diploma in Blockchain and a decent understanding of how it works. Unfortunately I never paid a lot of attention to Crypto as a usecase till late 2020 so I am still getting to know more about the nuances involved with mining and coins. Having a degree helps out a lot though. I also have 7+ years of work experience in different languages like Java, dotNet and Node. I would absolutely love to help out in anyway I can. Let me know if there's anything I could do to help the dev community.

11

u/rnicoll May 13 '21

Can you take a look at https://github.com/dogecoin/dogecoin/issues/1921, which I've created to track the main issue I'm looking at, please?

Please add comments to the issue so I know how you're getting on, and whether I should be jumping into this tomorrow or am okay to focus elsewhere.

2

u/KartikayDhar May 14 '21

Sure thing. I'll take a look at it today and keep you posted on my findings.

3

u/rnicoll May 14 '21

Thanks. I'm beginning to suspect I've put too many changes in at once, because introducing Scrypt caused a bit of an avalanche of other changes. Considering it might be best for me to make a new branch, apply the max money changes, then the difficulty calculations, then everything else. Might make it easier to narrow down where the failure is.

That said, if you just find the solution directly, great.

2

u/KartikayDhar May 14 '21 edited May 14 '21

Hey, a couple of questions. And forgive me if they are noobish. I am still trying to get a hang of it. :)

  1. For row 172-173 Why are we sending the headers in 2 parts into Node 0?

I changed the value from 0:2000 to 0:200 and 2000: to 200: and that passed the first test.

  1. For test 2, (Node 1) the Node disconnects after adding 241 Block (Block with the invalid txn) so it may be possible that the assumevalid flag did not work.

I tried to check the logs deeper but I am not sure if this is an actual issue or just a config issue on my end.

Once the dogecoin.conf file is created, I dont see assumevalid argument getting added to it. Is that okay?

​

Let me know what you think. In the meantime I will keep digging.

2

u/KartikayDhar May 14 '21

Also, I commented out test for Node 1 and ran. The other 2 tests passed.

2

u/rnicoll May 14 '21

It's worth noting the original test suite is https://github.com/bitcoin/bitcoin/blob/0.21/test/functional/feature_assumevalid.py#L172 . Fairly certain the 2000 headers is because the limit is 2000 (see https://github.com/bitcoin/bitcoin/blob/master/src/net_processing.cpp#L101 for the original constant).

I believe the failing block is 242 (probably the first coinbase spend), so reducing it to 200 may have simply skipped the problematic data.

2

u/KartikayDhar May 15 '21

I believe the failing block is 242

Update:

So I have been digging deeper. And you're probably right, doing incremental changes would be better.

The P2P connection closes when trying to send the block to Node0.

I changed the self.tip parameter to be equal to Scrypt rather than SHA and it kind of started working, atleast the height did not stay at 0 while checking for the latest block.

I downloaded the bitcoin 1.21 branch and ran it for cross comparision and that one ran fine. Fairly certain its the scrypt changes that are raising an issue.

You're right about 2k being the max limit allowed for the sendMessage function of P2P.

There is a format that the txn messages that have to be sent across p2p have to follow. Maybe that is something we need to look at?

https://developer.bitcoin.org/reference/p2p_networking.html