<oembed><type>rich</type><version>1.0</version><author_name>npub1wtx5qvewc7pd6znlvwktq03mdld05mv3h5dkzfwd3dc30gdmsptsugtuyn</author_name><author_url>https://nostr.ae/npub1wtx5qvewc7pd6znlvwktq03mdld05mv3h5dkzfwd3dc30gdmsptsugtuyn</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2011-12-17&#xA;🗒️ Summary of this message: A proposed idea to structure the network in a hypercube and use prefixes to address different parts of the network, reducing the need for broadcasts.&#xA;📝 Original message:A while back I had proposed a similar idea to the DHT, although my main&#xA;goal was to reduce the need for broadcasts.&#xA;&#xA;My idea was to structure the network in a hypercube and use prefixes to&#xA;address different parts of the network, and use those prefixes also to find&#xA;the location where an item (transaction, block, ...) should be stored. Each&#xA;vertex in the hypercube is a small, highly connected, cluster of nodes. The&#xA;storage would be distributed, messages are routed on behalf of others,&#xA;which makes finding the origin of the query hard to find (think Tor), each&#xA;node would have to store only O(log(p)) items, with p being the prefix&#xA;length, maximum number of hops is equal to the dimension of the hypercube&#xA;O(log(n)).&#xA;&#xA;Newly created transaction will be sent directly to the location they&#39;ll be&#xA;stored and miners retrieve new transactions at regular intervals. It might&#xA;increase delays to the confirmations, but it reduces the number of&#xA;broadcasts and storage requirements on nodes greatly.&#xA;&#xA;Regards,&#xA;Chris&#xA;&#xA;&#xA;On Sat, Dec 17, 2011 at 2:13 PM, Michael Grønager &lt;gronager at ceptacle.com&gt;wrote:&#xA;&#xA;&gt; Hey Eric,&#xA;&gt;&#xA;&gt; Two comments.&#xA;&gt;&#xA;&gt; 1.&#xA;&gt; The ability to query for transactions belonging to pubkeys or bitcoin&#xA;&gt; addresses is supported today by several implementations:&#xA;&gt; * blockexplorer.com&#xA;&gt; * bitcoin-js&#xA;&gt; * my own libBTC (will more on this soon)&#xA;&gt;&#xA;&gt; To query for transactions you need to use json-rpc and not the bitcoin&#xA;&gt; protocol, however. But still the purpose is the same: to be able to build&#xA;&gt; thin clients that can rely on a server for storing the blockchain and&#xA;&gt; keeping connected on the p2p network.&#xA;&gt;&#xA;&gt; The reason for not having these queries part of the standard protocol (I&#xA;&gt; think) are as they breaks anonymity, and that you would actually encourage&#xA;&gt; people to participate in the p2p.&#xA;&gt;&#xA;&gt; 2. The second part you mention, to some how move the storage of the&#xA;&gt; blockchain into a DHT based storage would be quite nice. The benefit of&#xA;&gt; this is that it could be a way to integrate the smaller clients into the&#xA;&gt; network without breaking the anonymity. But it should be thought out quite&#xA;&gt; carefully. Further, if each client only store a fraction of the blockchain&#xA;&gt; we should work out what fraction that need to be in order to ensure a&#xA;&gt; similar service level. I would be happy to work with you on this.&#xA;&gt;&#xA;&gt; Cheers,&#xA;&gt;&#xA;&gt; Michael&#xA;&gt;&#xA;&gt; On 17/12/2011, at 08:41, Eric Lombrozo wrote:&#xA;&gt;&#xA;&gt; &gt; Hey, guys.&#xA;&gt; &gt;&#xA;&gt; &gt; I haven&#39;t posted here before so I&#39;ll introduce myself. My name&#39;s Eric,&#xA;&gt; &gt; I&#39;ve been developing cryptocurrency-related&#xA;&gt; &gt; software for several months now, I&#39;ve implemented some libraries for&#xA;&gt; &gt; dealing with core bitcoin datastructures, made&#xA;&gt; &gt; some custom builds of bitcoind and interfaced it with a few apps I&#39;ve&#xA;&gt; written.&#xA;&gt; &gt;&#xA;&gt; &gt; In doing so, I&#39;ve come to appreciate just how little of the potential&#xA;&gt; &gt; for the bitcoin protocol is being exploited right now...&#xA;&gt; &gt; not only in terms of the script features but in terms of the potential&#xA;&gt; &gt; commands and node types that could exist.&#xA;&gt; &gt;&#xA;&gt; &gt; For instance, the protocol spec at&#xA;&gt; &gt; https://en.bitcoin.it/wiki/Protocol_specification only has 16 commands&#xA;&gt; &gt; listed and&#xA;&gt; &gt; only one service type...despite having a full 12 bytes for a command&#xA;&gt; &gt; code and a full eight bytes for a services&#xA;&gt; &gt; type.&#xA;&gt; &gt;&#xA;&gt; &gt; The fact that only one node service type is specified is probably due&#xA;&gt; &gt; to the fact that the satoshi client was written&#xA;&gt; &gt; to be a standalone monolithic app that took care of all the essential&#xA;&gt; &gt; needs for a network of peers.&#xA;&gt; &gt; i.e. block chain storage/management, transaction signing/verification,&#xA;&gt; &gt; key generation/wallet management, block mining, etc...&#xA;&gt; &gt; However, I think there&#39;s an urgent need for breaking up all these&#xA;&gt; &gt; different tasks into separate components that can run as independent&#xA;&gt; &gt; services on different types of devices.&#xA;&gt; &gt;&#xA;&gt; &gt; One of the big issues I&#39;m dealing with now pertains to block chain&#xA;&gt; &gt; storage. As of right now, it is implemented as sequential&#xA;&gt; &gt; disk files using Berkeley DB in the satoshi client. Then you have&#xA;&gt; &gt; other projects that have been using SQL tables, etc...&#xA;&gt; &gt; But I believe the direction this really needs to move towards is some&#xA;&gt; &gt; sort of distributed hash table...and the database queries&#xA;&gt; &gt; should be performed using the bitcoin protocol itself. Perhaps adding&#xA;&gt; &gt; a few more commands. As things stand right now,&#xA;&gt; &gt; the only way to query for transactions or blocks is by their hash. And&#xA;&gt; &gt; once a transaction gets incorporated into a block and&#xA;&gt; &gt; removed from the transaction pool, one can no longer query it by the&#xA;&gt; &gt; transaction hash without stepping outside the bitcoin protocol.&#xA;&gt; &gt; We need access to the disk file that stores the blocks whether it be&#xA;&gt; &gt; via Berkeley DB or SQL or whatever.&#xA;&gt; &gt;&#xA;&gt; &gt; I propose an extension to the bitcoin protocol to provide methods for&#xA;&gt; &gt; performing more sophisticated queries, such as &#34;Give me&#xA;&gt; &gt; an inventory of transactions involving this particular public key&#34; or&#xA;&gt; &gt; &#34;Give me an inventory all transactions in the last n blocks with&#xA;&gt; &gt; unredeemed outputs.&#34; This could be done by adding a few more commands.&#xA;&gt; &gt;&#xA;&gt; &gt; Furthermore, I propose a new network services type for nodes that&#xA;&gt; &gt; serve as block chain/transaction pool storage.&#xA;&gt; &gt;&#xA;&gt; &gt; Of couse, any peer that wishes to verify the integrity of the block&#xA;&gt; &gt; chain would still have to download at the very least&#xA;&gt; &gt; all the block headers...and to be completely sure, also all the blocks&#xA;&gt; &gt; themselves...and verify everything. But it would be&#xA;&gt; &gt; very nice to be able to run thin services that can rely on other&#xA;&gt; &gt; network peers to do this work. It is still possible to attain&#xA;&gt; &gt; a high level of confidence in the integrity by querying multiple peers&#xA;&gt; &gt; for similar objects and comparing. It is also possible&#xA;&gt; &gt; to run your own dedicated block chain storage servers which you trust.&#xA;&gt; &gt;&#xA;&gt; &gt; There are other ideas I have for other types of services, too.&#xA;&gt; &gt;&#xA;&gt; &gt; Anyhow, I&#39;m just throwing this out there...if anyone&#39;s interested I&#39;d&#xA;&gt; &gt; love to develop these ideas further and help put together some&#xA;&gt; &gt; specs.&#xA;&gt; &gt;&#xA;&gt; &gt; -Eric Lombrozo&#xA;&gt; &gt;&#xA;&gt; &gt;&#xA;&gt; ------------------------------------------------------------------------------&#xA;&gt; &gt; Learn Windows Azure Live!  Tuesday, Dec 13, 2011&#xA;&gt; &gt; Microsoft is holding a special Learn Windows Azure training event for&#xA;&gt; &gt; developers. It will provide a great way to learn Windows Azure and what&#xA;&gt; it&#xA;&gt; &gt; provides. You can attend the event by watching it streamed LIVE online.&#xA;&gt; &gt; Learn more at http://p.sf.net/sfu/ms-windowsazure&#xA;&gt; &gt; _______________________________________________&#xA;&gt; &gt; Bitcoin-development mailing list&#xA;&gt; &gt; Bitcoin-development at lists.sourceforge.net&#xA;&gt; &gt; https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt; ------------------------------------------------------------------------------&#xA;&gt; Learn Windows Azure Live!  Tuesday, Dec 13, 2011&#xA;&gt; Microsoft is holding a special Learn Windows Azure training event for&#xA;&gt; developers. It will provide a great way to learn Windows Azure and what it&#xA;&gt; provides. You can attend the event by watching it streamed LIVE online.&#xA;&gt; Learn more at http://p.sf.net/sfu/ms-windowsazure&#xA;&gt; _______________________________________________&#xA;&gt; Bitcoin-development mailing list&#xA;&gt; Bitcoin-development at lists.sourceforge.net&#xA;&gt; https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#xA;&gt;&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20111217/000eef2b/attachment.html&gt;</html></oembed>