This multisig is really fun. After taking all this time to get working, now I just cant stop trying many combinations. All looking quite stable and very solid, but of course it is using localhost, so no real networking errors.
UDP sometimes is pretty finicky, but that is another advantage of the shared secret multisig. It essentially acts as an error correcting code, well at least as long I dont mix in packets that are corrupted. If even one bit gets changed, it will not match the packet crc and so just get ignored, then the decryption will also fail, so I would say the odds of bad data getting processed is ignorable, even using UDP path.
So, that means based on network error rate, we can set the M of N ratio and no only does the multisig give us a lot more privacy, it makes Teleport more reliable. Just imagine 100 rabbits being teleported and if only 40 survive, then the real rabbit can be recreated. That is M of 40, N of 100.
I dont think there is any other crypto that has up to 254 multisig and it is all configurable each time you do a teleport:
{"requestType":"teleport","secret":"","dest":"RUHAPSpJDHeFgFd1J34WHJ69TpkMBsWtBt","amount":".1","coin":"BTCD","minage":"1","M":"128","N":"254"}
The above is the JSON text my code looks for when doing a teleport. The "dest" is the public address and that is something you need to know somehow via different channel. "amount" is the amount of "coin", in this case 0.1 BTCD. "minage" is the youngest telepod you authorize to be used. Remember, the younger the telepod, the higher the attacker's chances of getting some statistical correlation. I would certainly not recommend minage of 1! Then there are the "M" and "N" fields, which are the multisig M of N and that's it. So you can control the teleport's most important parameters, of course we need to get a GUI so you dont have to be editing JSON, but I hope you can understand the basics of using Teleport.
I think I will skip the local encryption and go straight to a linkable library. I want to do some testnet teleports sooner rather than later! Since it is testnet, it wont matter if the telepod file format changes and I cant really test the third onion layer. OK, you convinced me, time to port into BTCD core.
James
Sounds good man. I assume we are starting beta tests when porting to BTCD core is completed and working or are you going to do more testing before beta?
I will make libjl777 over the next couple days, BTCDdev will put in the calls to interface to it and hopefully this weekend we can be testing basic teleport on testnet. Keep in mind GUI status is still "not sure when it will be available", but those that can edit the basic teleport JSON should be able to test.
Then I add stuff like encrypting the telepods so even if your computer gets stolen they cant do anything with the telepods. I havent done much with tx reporting and error handling, I plan to do that while the basics are being tested.
Then I will fix the bugs as they are found and keep making releases until it has all the features needed and there are no significant bugs. It feels like a couple weeks to get there as now that I got the multisig to work (that was the trickiest), the rest is more detail work. Important, but not so difficult. Most things dont take me a full day to debug.
Ideally I can get back to pushing forward on InstantDEX before the end of month and that would mean I am just making the occasional bug fix to Teleport
James