Is it possible to create a complete code walk-through video for Zero-Net, explaining everything from the entry file through all of the functions and classes?
There isn't any, but the code is well documented, so if you just start from src/Ui/UiWebsocket.py, src/Site/Site.py and src/Peer/Peer.py and look through their dependencies, you'll understand the internals like I do.
is ZeroNet limited to Python 2? what version is it limited to?
It's compatible, with Python 2.7.x
Why did you name those specific files: src/Ui/UiWebsocket.py, src/Site/Site.py and src/Peer/Peer.py?
I have a different intention for this project.
1) disable updating of the base code (via github diabled)
2) enable only a single predefined website, with user directories defined by their public (bitcoin) addresses, or a sqlite db with a row for each user hash (bitcoin hash), and another sqlite db with a blockchain, and another with additional details,
3) users can only update one sqlitedb using their private key and add to the blockchain db with "transactions"
======= I hope that makes some sense ===========
4) users cannot create their own websites on my (desired) application. They must download zeronet and use zeronet - I will provide a link in my app.
maybe the easiest way to think about this is:
to rebuild zeronet with the following properties:
1) only 1 website available on the app... a website that I will build (already built reprogrammed in python and javascript)
2) users interact with my site/app by adding to the blockchain using bitcoin addresses
3) users interact with my site/app by editing a short list of key-value pairs associated with their bitcoin address
4) all records of user activity is saved in a sqlite db that is updated accross the network and can only be edited at the points of "ownership" by the owners of the private keys associated with the bitcoin addresses related to their personal content (key-value pairs)
--- can you help me achieve this? ---
I also want all users of my app to be updated whenever legitimate updates are made, just like websites on zeronet are updated when the owner changes their personal websites, but the core program and the core sqlite db must be immutable, only editable by me(the owner of the primary private key and address) and the blockchain db can only be appended and never edited
Why did you name those specific files: src/Ui/UiWebsocket.py, src/Site/Site.py and src/Peer/Peer.py?
That's the core functionality of ZeroNet/zites.
disable updating of the base code (via github diabled)
users cannot create their own websites on my (desired) application. They must download zeronet and use zeronet - I will provide a link in my app.
only 1 website available on the app... a website that I will build (already built reprogrammed in python and javascript)
You can enable MultiUser plugin especially for this.
enable only a single predefined website, with user directories defined by their public (bitcoin) addresses, or a sqlite db with a row for each user hash (bitcoin hash), and another sqlite db with a blockchain, and another with additional details,
users can only update one sqlitedb using their private key and add to the blockchain db with "transactions"
users interact with my site/app by editing a short list of key-value pairs associated with their bitcoin address
all records of user activity is saved in a sqlite db that is updated accross the network and can only be edited at the points of "ownership" by the owners of the private keys associated with the bitcoin addresses related to their personal content (key-value pairs)
This is usually achieved by creating a data.json file for each user and merging them up to a SQLite database. You can check out my tutorials here: https://github.com/krixano/ZeroNet-Dev-Center/issues/28
Anyone who wants to participate in my website, the one I will build using my fork of zeronet, must download my app, and participate according to the limitations available through my app.
Just include ZeroNet code to your app and create a special startup script, ZeroNet will handle these limitations itself.
only 1 website available on the app... a website that I will build (already built reprogrammed in python and javascript)
If you have Python scripts that can be rewritten to JavaScript, do that. It will also be helpful to ZeroNet users, so they would be able to use your app without a wrapper.
If the scripts cannot be rewritten, you can handle all UI in browser and send ZeroFrame requests to your ZeroNet fork. Then you could write a plugin that will add those commands to ZeroFrame handler. (tutorial: http://127.0.0.1:43110/14pM9huTYzJdyQyHRj6v2kfhMe8DrxwpGt/?/tutorials/write_a_plugin)
blockchain db can only be appended and never edited
This is rather difficult with ZeroNet. If you know how to change the algorithms to allow appending only, you can do this, but otherwise you should use another tool, like Etherium.
Thank you for the pointers... I think I'm being a little vague. I hope we can open a line of communication for further development. ... my email is [email protected]...
I also want you to look at Subutai.io
I do not want to duplicate the Subutai project. I think it is a bad strategy to begin with, but I am interested in their ability to deploy docker servers over a p2p network
@didlie You can connect me at ZeroMail if you need help: [email protected]
I am not as interested in the core functionality of zeronet zites as I am in zeronet itself. I want the app to do something it doesn;t do right now. I'm not developing something for people to write their own websites. Zeronet does that already. I need to core functionality of zeronet
Do you mean data sharing (e.g. github) or realtime p2p connections (e.g. bitcoin)?
You do understand that we can use this project to very easily create a block chain client that facilitates transactions across the p2p network?
@imachug first... can I ask you if you have a script to discover all websites across the network? How is this done? where in the code is this done?
example functionality::
lets say every website gets a human readable name:
name 1 = this site
name 2 = this site number two
name 3 = this site number three
....
each site is registered using a unique bitcoin address, so you might say that the name is not important. But what if the name is important, so that only one instance of any given name is allowed -- the first in time gets the name, then the name and hash are served and recorded to all clients, with some simple algorithm to avoid conflicts, and then when any client recognises the update in a pre-determined number of peers, it updates a blockchain... with the uniqueName->bitcoinAddress key value pair, and a hash of the previous block, then the blockchain is updated across all peers....
a ZeroNet blockchain
can I ask you if you have a script to discover all websites across the network? How is this done? where in the code is this done?
There is no way to discover all sites because anyone can create a site and don't send a link to someone. So only the owner knows about the site.
But there is Zirch, a search engine that grabs the addresses from HTML, data files, etc. recursively.
a ZeroNet blockchain
Sounds interesting.
can you make it for me?
You mean, make blockchain?
If you want...
But what I have in concept is more difficult to communicate on a message board. I can build it myself when I have a better understanding of how to code my own zites. I can do it in Javascript. You pointed me to some great documentation for ZeroNet that is not referenced on the home-page. The most valuable addition for new developers will be a fully commented code-base, where every line of code is fully commented.
Most helpful comment
That's the core functionality of ZeroNet/zites.
You can enable
MultiUserplugin especially for this.This is usually achieved by creating a
data.jsonfile for each user and merging them up to a SQLite database. You can check out my tutorials here: https://github.com/krixano/ZeroNet-Dev-Center/issues/28Just include ZeroNet code to your app and create a special startup script, ZeroNet will handle these limitations itself.
If you have Python scripts that can be rewritten to JavaScript, do that. It will also be helpful to ZeroNet users, so they would be able to use your app without a wrapper.
If the scripts cannot be rewritten, you can handle all UI in browser and send ZeroFrame requests to your ZeroNet fork. Then you could write a plugin that will add those commands to ZeroFrame handler. (tutorial: http://127.0.0.1:43110/14pM9huTYzJdyQyHRj6v2kfhMe8DrxwpGt/?/tutorials/write_a_plugin)
This is rather difficult with ZeroNet. If you know how to change the algorithms to allow appending only, you can do this, but otherwise you should use another tool, like Etherium.