[Idea] NuLaw - 60 NBT bounty!

repo and chatroom created.

1 Like

Will it be NuLaw or NuLaws? I find NuLaw to make more sense. Also, capitalise for beauty? :purple_heart:

NuLaw says ā€¦

In NuLaw, paragraph ā€¦

NuLawā€™s features are currently ā€¦

Please go check in NuLaw.

Many probably work either way, but it seems more flexible without the ā€˜sā€™. Iā€™m ready to be wrong. :innocent:

Doesnā€™t mean one cannot say ā€œour NuLaws state that ā€¦ā€.

Yup Iā€™ll make the changes.

I was hoping to have more time for this but I have some obligations to B&C with continued issues to work out for the Nu 2.1.1 release. Iā€™ve created a staging area to start going through all of the existing motions and tacking them as time allows. Iā€™m determined to make NuLaw a thing. Even if I have to do it all myself.

4 Likes

I want to help with interpretation of motions, i think i have a good memory of the context for a lot of them, such as the minimum offset motion. Iā€™m not sure how to help, the github code is just hashes and names right?

For now Iā€™m just putting all of the motions texts, hashes, dates, and other data into a single JSON file with their original thread title as the key. Just so we have everything verified in one place thatā€™s easy to work with programmatically. I donā€™t think weā€™re at the interpretation point quite yet.

Iā€™m actually having trouble generating the hashes from some of the older motions before we had Assistant bot, so itā€™s going to be fun trying to pull the correct raw text to put together the hash :frowning:. Once I had all of the verified information for every motion in the file I was going to start working out the structure defined by @jgeewax above.

Iā€™m still a bit fuzzy on how to put it all together but I think the important part right now is to have all the information from existing motions verified and available.

1 Like

Can you link a few troublesome motions?

Iā€™ve marked two of them so far in the link I posted above.

1 Like

Okay this is moving along. Major problem though. Iā€™m unable to produce the hashes for 6 motions. Meaning I canā€™t figure out the original text used to produce it. Most of them are from way back before @woolly_sammoth built assistant to standardize the process. If we canā€™t figure out the raw text to produce the hashes this is going to be really broken.

You can find the compiled list I was able to complete here: https://github.com/CoinGame/NuLawPrep

This is the list of hashes I could not reproduce from the original forum text:

3 Likes

I can confirm that at least two of these motions cannot be verified with http://hash.online-convert.com/ripemd160-generator which most of us used at the time. This may be caused by forum or browser upgrades changing hidden codes.

I think they will need to be re-hashed in the same thread with the question to the community whether they can confirm the new hash. Probably best to repost the proposal into a new post in the same thread with the new hash.

1 Like

The problem comes into play when we build the verification script to run through previous motions. We would probably have to hard code it to ignore certain hashes because we canā€™t offer up the text. Which I think is dirty, but that seems to be the only choice.

But thatā€™s a problem for another day. So I guess the next step is to re-create the text for those 6 hashes somewhere and have shareholders re-vote on them.

Maybe it can be one motion basically with 6 new verifiable hashes for each proposal referring to the original threads?

I suppose that works. You know I was thinking more about this. Maybe even the python verification script should be part of the NuLaw repo. Like, changes to the script need to be voted on as well, because the script will need to be hard coded to ignore some hashes that are shown in the client. Maybe any scripts or changes to scripts that manage NuLaw itself need to be voted upon.

Just a thought. I dunno if itā€™s over-complicating the process. I suppose if the script follows the text of a given motion in how it operates then it should be fine to hard code some values to ignore. I would like to spend a little more time trying to recreate the old hashes. It may seem like just a wrinkle to the process but for me it feels like a lot more.

1 Like

Wonā€™t be easy, maybe indeed going back to an old Firefox version as a first step? Going back to an old Discourse version with an old backup will be a bit harder.

I donā€™t think we should hardcode to ignore. I suspect they will be read into a database or such and than considered to be invalid. By re-creating motions with correct hashes the system would recognise those new motions as being the only ones correct. The date stamping would be read from the blockchain anyway as it is not part of the text of the motion. Maybe a submission date should be added to motion texts, in order to reduce the risk of some types of fraud in the future.

As with any code some people will need to verify it ensuring it does what it says it does, whether that is an independent audit or a number of Shareholders approving changes is up for discussion and may change when the stakes will become higher.

Iā€™m not sure why I canā€™t recreate the hash for the open source motion, itā€™s frustrating me because I know that it would have been confirmed multiple times when it was released by more than just myself.

I have a couple of local files on another machine that I can check to see if I can find the originally formatted Markdown that Iā€™ll review when I get back to my house later this morning.

Slightly off-topic again, but figured this was worth looking at: https://medium.com/@PaxDirectory/codex-a-legal-scripting-language-e3723cc76662#.zfvtsfabg

2 Likes

Posting a link here for tracking purposes.

Am I correct in my impression that the validation script will go through the blockchain looking for passed motion hashes and match them up with the ones in motions.json, calculating the hash of ā€¦ Base64-decoded content-b64? Is hash-content equal to the decoded content-b64?

Good questions. I didnā€™t clarify those points. Iā€™m not even sure this is the right way to go about the process, but all of the needed information to perform various functions is contained in a format that is easy to work with programatically. That was really my initial goal here.

So, the hash-content field wonā€™t produce the hash. I included it simply to have a plain english version of the text for reading. It has been converted from the original raw text to play nicely within JSON (characters escaped, single lined). The content-b64 is produced using the original raw text. Once decoded it can be passed to a ripemd160 hash function and should produce the hash.

I guess I shouldnā€™t call that field hash-contentā€¦ it sounds like you can produce the hash from it but thatā€™s not the case.

So how does this all work within the scheme of the validation script? Weā€™ll produce individual files like every other motion using the new source content for these motions. They will be included in the NuLaws process the same as every other motion. The difference being that when the script tries to validate these individual files (by producing a hash and looking to see if it passed in the blockchain) there will be a condition that looks for the old hash in the blockchain instead of the new one. The purposes of my motion above is to receive consensus from shareholders that this is an acceptable modification to the process.

Other option could be to vote on each of these new hashes all over again, and completely ignore all of the older hashes. Though I think acknowledging this historical change in the code through a single motion is cleaner even if we have to create a special condition in the script for these five motions. The idea being that we wonā€™t ever have to make such a condition again and it will only need to be coded once and left that way.

1 Like

BASE64 of Motion to make the nu source code available:

V2l0aCB0aGUgc3VjY2Vzc2Z1bCBwYXNzYWdlIG9mIHRoaXMgbW90aW9uLCB0aGUgTnUgU2hhcmVo b2xkZXJzWzFdICgiU2hhcmVob2xkZXJzIikgaGF2ZSBpbnN0cnVjdGVkIHRoZSBOdSBEZXZlbG9w bWVudCBUZWFtWzJdICgiRGV2ZWxvcGVycyIpIHRvIG1ha2UgdGhlIE51IHNvdXJjZSBjb2RlIGF2 YWlsYWJsZSB0byB0aGUgZ2VuZXJhbCBwdWJsaWMuIFRoZSB1cGRhdGVkIGxpY2Vuc2Ugd2lsbCBh bGxvdyBmcmVlLCBwZXJtaXNzaXZlIHVzZSBvZiB0aGUgc291cmNlIGNvZGUgaW4gTnUtcmVsYXRl ZCBhbmQgZGVyaXZhdGl2ZSBwcm9qZWN0cy4NCg0KVGhlIE51IHNvdXJjZSBjb2RlIChpbmNsdWRp bmcgdGhlIGNvZGUgdGhhdCBkZXNjcmliZXMgdGhlIHVuZGVybHlpbmcgTnUgbmV0d29yayBwcm90 b2NvbCwgdGhlIGRhZW1vbnMsIHRoZSBHVUlzLCBhbmQgdGhlIGFzc29jaWF0ZWQgc3VwcG9ydCBz eXN0ZW1zIGZvciB0ZXN0aW5nLCBkaXN0cmlidXRpb24sIGFuZCBkZXBsb3ltZW50KSB3aWxsIGlu Y2x1ZGUgYSB0ZXh0IGZpbGUsIENPUFlJTkcsIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUg cHJvamVjdC4NCg0KQ29weXJpZ2h0IChjKSB7WUVBUlszXX0gTnUgRGV2ZWxvcGVycw0KQ29weXJp Z2h0IChjKSAyMDEzLTIwMTQgUGVlcnNoYXJlcyBEZXZlbG9wZXJzDQpDb3B5cmlnaHQgKGMpIDIw MTEtMjAxNCBQZWVyY29pbiAoUFBDb2luKSBEZXZlbG9wZXJzDQpDb3B5cmlnaHQgKGMpIDIwMDkt MjAxMiBCaXRjb2luIERldmVsb3BlcnMNCg0KUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weQ0Kb2YgdGhpcyBz b2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJl IiksIHRvIGRlYWwNCmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMNCnRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwNCmNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0 d2FyZSBpcw0KZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29u ZGl0aW9uczoNCg0KVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lv biBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4NCmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KDQpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksDQpGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVINCkxJQUJJTElUWSwgV0hF VEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5H IEZST00sDQpPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg VVNFIE9SIE9USEVSIERFQUxJTkdTIElODQpUSEUgU09GVFdBUkUuDQpFeGlzdGluZyBjb3B5cmln aHRzIGhlbGQgYnkgb3V0c2lkZSBwZXJzb25zIG9yIG9yZ2FuaXphdGlvbnMgZm9yIGNvZGUgaW50 ZWdyYXRlZCBpbnRvLCBvciBhZGFwdGVkIGZvciB1c2Ugd2l0aGluIE51LCB3aWxsIGJlIHJldGFp bmVkIHdpdGhpbiB0aGUgc291cmNlIGNvZGUgYXMgcmVxdWlyZWQgYnkgdGhlaXIgcmVzcGVjdGl2 ZSBsaWNlbnNlcy4gVGhlIGxpY2Vuc2UgdGV4dCBmb2xsb3dzIHRoZSBtb2RlbCBlc3RhYmxpc2hl ZCBieSBCaXRjb2luWzRdIChhbmQgdGhlbiBjb250aW51ZWQgYnkgdGhlIFBlZXJjb2luWzVdIGFu ZCBQZWVyc2hhcmVzWzZdIHNvZnR3YXJlIGZvcmtzKS4NCg0KQWRkaXRpb25hbGx5LCB0aGUgU2hh cmVob2xkZXJzIGdyYW50IHRoZSBEZXZlbG9wZXJzIHRoZSBhYmlsaXR5IHRvIGRldGVybWluZSBh IGxvY2F0aW9uIGZvciB0aGUgY29kZSByZXBvc2l0b3J5IChCaXRCdWNrZXQsIEdpdGh1YiwgZXRj Likgd2hlcmUgdGhlIHNvdXJjZSBjb2RlIHdpbGwgYmUgYXZhaWxhYmxlIHRvIHZpZXcgYW5kIGRv d25sb2FkLiBUaGUgRGV2ZWxvcGVycyB3aWxsIGFjdCBpbiB0aGUgYmVzdCBpbnRlcmVzdHMgb2Yg U2hhcmVob2xkZXJzIHdoZW4gc2VsZWN0aW5nIHRoZSBwZXJzb24ocykgZ3JhbnRlZCBwZXJtaXNz aW9ucyB0byByZXZpZXcsIGFwcHJvdmUsIGFuZCBtZXJnZSBwcm9wb3NlZCBtb2RpZmljYXRpb25z IHRvIHRoZSBOdSBzb3VyY2UgY29kZS4NCg0KRmluYWxseSwgdGhlIFNoYXJlaG9sZGVycyBncmFu dCB0aGUgRGV2ZWxvcGVycyBkaXNjcmV0aW9uIHdoZW4gZGV0ZXJtaW5pbmcgd2hpY2ggZmVhdHVy ZXMsIHN1Ym1pdHRlZCB0byB0aGUgcHJvamVjdCdzIGNvZGUgcmVwb3NpdG9yeSBmcm9tIGluZGl2 aWR1YWwgY29udHJpYnV0b3JzIGJ5IHdheSBvZiAicHVsbCByZXF1ZXN0cywiIGFyZSBtZXJnZWQg aW50byB0aGUgTnUgc291cmNlIGNvZGUuIE1lbWJlcnMgb2YgdGhlIE51IENvbW11bml0eSBhdC1s YXJnZSBhcmUgYWxsIGVtcG93ZXJlZCB0byBpbnRyb2R1Y2UgbW90aW9ucyB0byBpZGVudGlmeSB0 aGUgInJvYWRtYXAiIHRoYXQgY29yZSBkZXZlbG9wbWVudCB3aWxsIGZvbGxvdy4NCg0KT25jZSB0 aGlzIG1vdGlvbiBoYXMgYmVlbiBwYXNzZWQsIHRoZSBEZXZlbG9wZXJzIHdpbGwgaGF2ZSBmb3J0 eS1maXZlICg0NSkgZGF5cyB0byBpbmZvcm0gU2hhcmVob2xkZXJzIG9mIHRoZSBzdGVwcyByZXF1 aXJlZCB0byBvcGVuIHRoZSBOdSBzb3VyY2UgY29kZSB0byB0aGUgcHVibGljLCBhbmQgdG8gdGFr ZSB0aG9zZSBzdGVwcy4gVGhlIGZpbmFsIGFjdGlvbiByZXF1aXJlZCBieSB0aGUgcGFzc2FnZSBv ZiB0aGlzIG1vdGlvbiB3aWxsIGJlIHRvIHJlbGVhc2UgYSBuZXcgdmVyc2lvbiBvZiB0aGUgTnUg Y2xpZW50cyAoZGFlbW9uIGFuZCBHVUksIGZvciBXaW5kb3dzLCBPUyBYLCBhbmQgTGludXgpIHRo YXQgaW5jbHVkZXMgdGhlIHVwZGF0ZWQgc29mdHdhcmUgbGljZW5zZS4gVGhpcyByZWxlYXNlIHdp bGwgYmUgdGFnZ2VkICJ2MS4wLjAiIHdpdGhpbiB0aGUgdmVyc2lvbiBjb250cm9sIHN5c3RlbS4g QWZ0ZXIgbWVldGluZyB0aGUgcmVxdWlyZW1lbnRzLCB0aGlzIG1vdGlvbidzIHB1cnBvc2UgaXMg Y29tcGxldGUsIHdpdGggbm8gZnVydGhlciBhY3Rpb24gcmVxdWlyZWQgYnkgdGhlIFNoYXJlaG9s ZGVycyBvciB0aGUgRGV2ZWxvcGVycy4NCg0KLi4uLi4NCg0KWzFdICJOdSBTaGFyZWhvbGRlcnMi IGFyZSBwZXJzb25zIHdpdGggbGVnaXRpbWF0ZSBhY2Nlc3MgdG8gZW5vdWdoIE5TUiB0byBjYXN0 IGEgdm90ZSBmb3IgdGhpcyBtb3Rpb24gYnkgbWludGluZyBhIHZhbGlkIE51IGJsb2NrLg0KDQpb Ml0gIk51IERldmVsb3BtZW50IFRlYW0iIGFyZSB0aGUgcGVyc29uKHMpIHVsdGltYXRlbHkgcmVz cG9uc2libGUgZm9yIHNvZnR3YXJlIGRldmVsb3BtZW50IG9mIHRoZSBOdSBuZXR3b3JrLCBhbmQg d2hvIGhhdmUgdW5yZXN0cmljdGVkIGFjY2VzcyB0byBOdSBzb3VyY2UgY29kZSB3aGVuIHRoaXMg bW90aW9uIHBhc3Nlcy4NCg0KWzNdIFRoZSBkYXRlIG9mIHRoZSBjb3B5cmlnaHQgbGlzdGVkIGlu IENPUFlJTkcgd2lsbCBtYXRjaCB0aGUgeWVhciB0aGF0IHRoaXMgbW90aW9uIGlzIHBhc3NlZCwg YW5kIHdpbGwgYmUgYmFjay1kYXRlZCB0byAyMDE0IGlmIG5lZWRlZC4gRm9yIGV4YW1wbGUsICdD b3B5cmlnaHQgKGMpIDIwMTQtMjAxNSBOdSBEZXZlbG9wZXJzJyBpZiB0aGUgbW90aW9uIHBhc3Nl cyB0aGlzIHllYXIsIG9yICdDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNiBOdSBEZXZlbG9wZXJzJyBp ZiB0aGUgbW90aW9uIGRvZXMgbm90IHBhc3MgdW50aWwgMjAxNi4NCg0KWzRdIGh0dHBzOi8vZ2l0 aHViLmNvbS9iaXRjb2luL2JpdGNvaW4vYmxvYi9tYXN0ZXIvQ09QWUlORw0KDQpbNV0gaHR0cHM6 Ly9naXRodWIuY29tL3BwY29pbi9wcGNvaW4vYmxvYi9tYXN0ZXIvQ09QWUlORw0KDQpbNl0gaHR0 cHM6Ly9naXRodWIuY29tL1BlZXJzaGFyZXMvUGVlcnNoYXJlcy9ibG9iL21hc3Rlci9DT1BZSU5H

1 Like