HelloZeroNet / ZeroNet

ZeroNet - Decentralized websites using Bitcoin crypto and BitTorrent network
https://zeronet.io
Other
18.32k stars 2.26k forks source link

ZeroNet confirmation by key #1483

Open ghost opened 6 years ago

ghost commented 6 years ago

We implemented a fast block on SHA256 using bitcoin technology. Can you create an api for starwels, which allows you to create a stock exchange in zeronet? We need all transactions to be checked using blockchain.

Thunder33345 commented 6 years ago

is it possible to explain more in depth of your usecase? while anyone can make a custom zeronet plugin to add the APIs(like how some sites require plugin to sync with ETH chain) but i think unless it's general/useful enough to warrant it to be baked into core it shouldnt be

for example; what apis you want

ghost commented 6 years ago

I can not describe the technology in a few words. If the developers do not know how to do this, I can write the documentation. Think about how to add the explorer block to the zeronet

Thunder33345 commented 6 years ago

feel free to describe it in however long it takes, or link to wherever that is

a blockchain explorer means you need some way to get the blockchain while in clearnet anyone could just "trust" a webserver but i dont think that will work here we probably need a RPC connection to the LOCALLY RUN coin client which has the chain which can be fetch and trusted since it's run locally

or you can have a trusted node that push blocks onto a site once they notice it's minted and all peers can use that if they dont have the RPC client

ghost commented 6 years ago

A trusted node can be corrupted by a DDOS attack and hacked. This is not stable and not safe, especially if you make a stock exchange. Another thing if you can make support for p2p nodes.

Thunder33345 commented 6 years ago

good point, but this is zeronet the trusted node strictly operates on zeronet all it does is pushed the block file to zeronet peers which the file will eventually be shared to everyone who used the site, thus after the initial load everything will be fine even if the trusted node is offline, once the file is shared to others, it dosent matter it will propagate itself only way to attack it is directly somehow turning it off(which just stops the stream of update for newly minted blocks)

BUT we can assume people who cared enough will have their own coin/blockchain client which have a RPC connection, and if we wanna go full on we can just make it so anyone with RPC client will upload their data to said site, even if the data isnt "trusted" it can be verified via block signature so it should be relatively "save"

there's also P2P plugin which enable P2P support https://github.com/HelloZeroNet/Plugin-PeerMessage you could look into that if it serves what you are looking for

ghost commented 6 years ago

BUT we can assume people who cared enough will have their own coin/blockchain client which have a RPC connection, and if we wanna go full on we can just make it so anyone with RPC client will upload their data to said site, even if the data isnt "trusted" it can be verified via block signature so it should be relatively "save"

If this is so I like this idea where each user can share their database. But there is one drawback the database can weigh more than 200 gigabytes Need additional conditions Lightweight node https://en.bitcoin.it/wiki/Lightweight_node

Reduce Storage It is possible to configure your node to to run in pruned mode in order to reduce storage requirements. This can reduce the disk usage from over 145GB to around 5GB.

Running a node in pruned mode is incompatible with -txindex and -rescan. It also disables the RPC importwallet. Two RPCs that are available and potentially helpful, however, are importprunedfunds and removeprunedfunds.

To enable block pruning set prune=N on the command line or in bitcoin.conf, where N is the number of MiB to allot for raw block and undo data.

A value of 0 disables pruning. The minimal value above 0 is 550. Your wallet is as secure with high values as it is with low ones. Higher values merely ensure that your node will not shut down upon blockchain reorganizations of more than 2 days - which are unlikely to happen in practice. In future releases, a higher value may also help the network as a whole because stored blocks could be served to other nodes.

https://bitcoin.org/en/full-node#configuration-tuning

there's also P2P plugin which enable P2P support https://github.com/HelloZeroNet/Plugin-PeerMessage you could look into that if it serves what you are looking for

In my spare time I study information about the zeronet, I know that this is possible but it takes time.

Thunder33345 commented 6 years ago

yes blocksize will be a very huge problem at the worst case you can always make a secondary plugin to work with your site which i think it's better way to tackle the problem full on by connecting to a external blockchain

which would work better on RPC local client, then trying to implement a client on javascript/plugin level

still it would be easier for me if i could fully understand your concept/ideas and to think of a solution if you have any documents/whitepaper of concept please do link it ill try to read it when i have free time i have saw starwels on zeronet but the site provide not much info, same when i try to google it up

ghost commented 6 years ago

Technical document I do not have it will take a lot of time and I need to understand all the subtleties of zeronet. You can add data transfer in the C ++ language, for example, to make a very fast p2p chat or you can use erlang https://www.erlang.org/ This function must be inside the kernel.

Thunder33345 commented 6 years ago

sorry but the whole zeronet is built on Python as far as i know

ghost commented 6 years ago

Python is slow, but you can redesign it for your own purposes. I myself will take care of this I am very sorry that it will be very slow.

ghost commented 6 years ago

I made a small example of how this can work and what needs to be done for this

https://github.com/starwels/starwels-seeder https://github.com/starwels/starwels/blob/master/src/chainparams.cpp#L122

It's just a prototype but the idea is to transfer ip addresses to each other.

Image alt A picture for a full understanding of how this can work