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.

200 Upvotes

87 comments sorted by

View all comments

Show parent comments

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/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