Add JSON metadata to event log entries.
EZQG2APB36DDMIAYDPPDGOIXOD7K2RZZSGC2NKGZIHB2HZBTW7EQC 2G3GNDDUOVPF45PELJ65ZB2IXEHJJXJILFRVHZXGPXUL4BVNZJFQC AXKKXBWN4EMUOLV43WN52JSKJPBV7TLSGLNJW5EZXHSJNKCYUWOQC NTPC7KJEAPA34SBIA74FVQSJXYNW32RIUQTHUSUTKMEUCPLUIBJAC OBFPJS2GHO2PEHBHGEHKIUOUAFIQHPIZXEVD2YIE3ZIE2PVMH5VAC XMONXALY6ZE6GED7TZGLNS5AUHTO23C5AUC74LEBQSFXRMQDPOLQC W35DDBFYF6Z4ZPCFEO5RPAONZLYCSNTXUSTS6FIUUVZHCI6Q7GHAC IZEVQF627FA7VV25KJAWYWGGC35LZUUBBQRPN5ZAINTQLPEDRTEAC Z7KS5XHHC6PAMTVBHXY7KUSS3BWAOU6FSYIITUCFOOJZU4OUJHBAC PBD7LZYQHXAA3KLH2ZUX5GW4UFML6BQ32KXZF4KZ6OYFASUYFJ5QC TNR3TEHKVADAEZSTOD2XLSUTSW5AWST2YUW4CWK5KE7DSC6XHZNAC 4IQVQL4TS35GL2GYZJG254TKJLL5EHMRSFT77Z4VTRZIG2TMBM3QC Y35QCWYW2OTZ27ZVTH2BA3XJTUCJ2WMLKU32ZCOCDY3AW7TIZXRAC TLQ72DSJD7GGPWN6HGBHAVPBRQFKEQ6KSK43U7JWWID4ZWAF47JAC NVOCQVASZWTKQJG7GPH7KHKZZR7NUG4WLV5YY4KAIRPCJRWCZPIAC 7DBNV3GV773FH5ZLQWFX4RBOS4Q3CIK2RYZNNABY3ZOETYZCXRNQC N4NDAZYTLSI2W22KT3SYXL257DBMSH3UT2BXOYM7LH7FSZAY4RLAC RSEB2NFGUBTFESE5BJKDUVQL5Y5ZVGY5O4CJX2LNP63MS3NRHHZQC 75N3UJ4JK56KXF56GASGPAWLFYGJDETVJNYTF4KXFCQM767JUU5AC WO2MINIF4TXOHWSE7JWXRZYN64XRVLYIRFMF4SMPSOXKA2V77KMQC BROSTG5KP3NUNLSYPVQID254TE47E5RKQAKLPIY7PGWETE6JNMTAC I2KHGVD44KT4MQJXGCTVSQKMBO6TVCY72F26TLXGWRL6PHGF6RNQC General:* Convert SQLite code to use PersistentUser Interface:* Login* Evaluate OAuth options* Invite* Record who invited a participant.* When a new participant is invited to the project, allow them to create an account.* Profile* Timeline - Yours* Log Start* Log Stop* Amend Event* Amend operations targeting events older than <commit_delay hours> fail.* Future work - garnish/reimburse based approach?* Payouts* History of payouts (read from blockchain?)* Projected payout given current data* Voting* List Proposals* Create Proposal* Options to be considered* Closing date* Vote* Resource Pooling* Create Resource Pool* Describe resource need* Base resource award set by socialized vote?* Voting on continuous values?* Set resource contribution timeline* Solicit/Suggest resource acquisition designee (& vote)* Escrow of resource acquisition contributions.* Resource award bidding?* In case of oversubscription, award is reduced by a function of the oversubscription amount.* "Test Oversubscription" functionality.* Read blockchain transactions; when a payment is observed, distribute it to participants.* Adjust work index reader to only read work index entries older than <commit_delay hours>.* Tabulate votes & randomly pick from weighted distribution.* Resource pool awardingPayouts Service* BTC address alias chains (in case new payouts should go elsewhere)* Update Payout Address- authenticate by asking the user to sign and broadcast a small txn with a specific- amount from the old address to the new address- user creates account & provides payout address- inviting user asked to sign a txn that transfers a specific amount of btc from their- current payout address to the invitee's payout address
Guiding Principle:Trust in your collaborators is the foremost design principle. Any attempt toinhibit abuse or fraud within a company will ultimately be circumventable, soit's more important to provide features that will be useful to friendly actors.Any feature that can be used to retroactively punish a malicious actor can alsobe used to abuse a friendly but unpopular actor, and so should be avoided. Thecorrect way to exclude a malicious actor is to fork the company to exclude thatactor.Design Goals:* Do not discard information. Mutable caches of state are fine, butretain all information necessary to reproduce both the current state andall prior states of the cache.* Timestamp EVERYTHING.* Keep a cryptographically verified audit trail.* Use cryptographic signatures for authentication of all requests to securedresources.Library:* Invite* When a new participant is invited to the project, allow them to create an account.- user creates account ands provides initial payout address- inviting user asked to sign a txn that transfers a specific amount of btc from theircurrent payout address to the invitee's payout address as confirmation ofthe invitation* Timeline* Amend Event* Amend operations targeting events older than <commit_delay hours> fail.* MAYBE garnish/reimburse based approach?* Secure the transaction log via inclusion of periodic hashes of the loginto the public blockchain?* User* Add public keys that can be used to sign requests. How does this interactwith certificate-based auth from browsers? Require openpgpjs?* Payout Address Update- authenticate by asking the user to sign and broadcast a small txn with a specificamount from the old address to the new address* Payouts* Payouts should not include events younger than <commit_delay hours> to permit amends.* Find current verified address for each payout.* History of payouts (read from blockchain?)* Include hours won in resource auction - requires confirmation that contributionwas actually made (observed in the confirmed blockchain)* Resource Pooling* Resource auction bids should include the source address which will be used in the CoinJoin txn.* Create election for resource acquisition designee* Elections* Create Election- Options to be considered- Closing date* List Proposals* Record VoteWebserver:* Login* Evaluate OpenID options* Companion Creation* Require user to provide the PGP public key that will be used to authenticate requests* Authentication* Require bodies of all* Timeline* Amend EventPayouts Service:* Read blockchain transactions* Invitation validation* Payout Address Update validation* When a payment is observed, distribute it to participants.* When a resource acquisition CoinJoin is observed, record time awards* Elections* Close voting window* Tabulate votes & randomly pick winner from weighted distribution* Record & announce winning option* Resource Pooling* Finalize resource pooling auction* Create CoinJoin transaction to award BTC to the resource acquisition designee* Notify auction winners so that input addresses & signatures may be collected.