twisterp2pblockchainnetworkbittorrentipv6microbloggingsocial-networkdhtdecentralizedtwister-coretwisterarmyp2p-networktwister-servertwister-ipv6
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
3.2 KiB
61 lines
3.2 KiB
- Take care of posts using older public key when key is replaced. |
|
|
|
notes: not very difficult, GetTransaction must receive a maximum block number to search the |
|
transaction (we get this from post["height"]). another txIndex should be set to speedup lookup |
|
(key in db includes the number of the block that changed tx so previous one can be found). |
|
pseudocode: |
|
getTxIndex( key = "userX" ) => block h contains this tx; |
|
while( h > max_h ) |
|
getTxIndex( "userX_h" ) => block h contains the previous tx |
|
|
|
- Until old public key is properly used, disable banning torrent peers due to bad piece hashes. |
|
note: torrent.cpp line 3286 (function piece_failed), iteration to ban peers is disabled (continue). |
|
|
|
- Count UTF8 chars in acceptSignedPost to proper limit the 140 characters. |
|
|
|
- Encrypt user_data (which contains all DMs) |
|
|
|
- Test wallet encrypt to see if it still works from original bitcoin implementation and what |
|
are the implications to our code. |
|
|
|
- Rescan directmessages after importing a privatekey (importprivkey) |
|
|
|
- Check libtorrent's limitation on the number of pieces (max_pieces in piece_picker.hpp = 1<<19) |
|
Since post number is constrained by max of 288 posts per day in average, that means we have 5 years |
|
to think about it (for the really heavy users). |
|
|
|
- Besides increasing the maximum number of pieces, a more pressing issue to save bandwidth and |
|
torrent download time would be to define the first piece to download/store locally. People don't |
|
need to maintain the entire post history for everybody they follow, they could just keep the last |
|
ones. This has to be implemented. |
|
|
|
- Move all crypto to javascript, store only encrypted version of the privatekey (which would be |
|
decrypted only in browser memory). getposts may obtain all DMs encrypted to browser, another |
|
newpostmsg needs to be provided to receive posts with signature field added. |
|
|
|
- Store a dht resource "publickey" containing not only the public key itself but also information |
|
needed to validate it by a lightweight client. That includes: block hash, block height and partial |
|
merkle tree inside that block. This resource propagation cannot be sent right after user |
|
registration for obvious reasons (no block yet, other nodes wouldn't accept the signed dht put). |
|
|
|
- Discuss and implement the acceptable level of spam per day (priorizing localization). |
|
|
|
- Implement the mention forwarding mechanism discussed in the paper so user don't need to do polling |
|
and can also be sure to receive all mentions. |
|
|
|
- Implement hashtag "storage-less" torrents for post distribution. |
|
|
|
- Define expiration policies to dht stored values. Currently all keys are refreshed every hour which, |
|
according to previous bittorrent research, would be enough to keep data available forever (with high |
|
probability). twister also persists keys to disk. As userbase increases, old post storage and |
|
unreliable multivalued keys should better expire. Since those posts include the height and time, a |
|
policy may me defined. |
|
=> Implemented shouldDhtResourceExpire() which is tested on initialization but not really used yet. |
|
|
|
- Check stored dht values if their signature is still valid before trying to refresh another node. |
|
Key pair might have changed and currently we receive a lot of errors from other nodes. |
|
|
|
- save_file() must truncate file. |
|
|
|
- |
|
|
|
|