Transaction

b79df79b57b2a0c28edfa8f9cc96560446eaa41e7705f876fc55ba76731b7188
Timestamp (utc)
2019-08-31 07:11:57
Fee Paid
0.00039570 BSV
(
0.00039570 BSV
-
0.00000000 BSV
)
Fee Rate
1,004 sat/KB
Version
1
Confirmations
337,603
Size Stats
39,378 B

1 Output

Total Output:
0.00000000 BSV
  • j"1ChDHzdd1H4wSjgGMHyndZm6qxEDGjqpJLM™n><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line">INFO Start processing</span><br><span class="line">INFO Files loaded in 239 ms</span><br><span class="line">INFO Generated: index.html</span><br><span class="line">INFO Generated: archives/index.html</span><br><span class="line">INFO Generated: fancybox/blank.gif</span><br><span class="line">INFO Generated: fancybox/jquery.fancybox.css</span><br><span class="line">INFO Generated: fancybox/fancybox_loading@2x.gif</span><br><span class="line">INFO Generated: fancybox/jquery.fancybox.js</span><br><span class="line">INFO Generated: fancybox/fancybox_loading.gif</span><br><span class="line">INFO Generated: fancybox/jquery.fancybox.pack.js</span><br><span class="line">INFO Generated: fancybox/helpers/fancybox_buttons.png</span><br><span class="line">INFO Generated: fancybox/fancybox_sprite.png</span><br><span class="line">INFO Generated: fancybox/fancybox_overlay.png</span><br><span class="line">INFO Generated: fancybox/fancybox_sprite@2x.png</span><br><span class="line">INFO Generated: css/style.css</span><br><span class="line">INFO Generated: archives/2019/index.html</span><br><span class="line">INFO Generated: fancybox/helpers/jquery.fancybox-buttons.css</span><br><span class="line">INFO Generated: fancybox/helpers/jquery.fancybox-buttons.js</span><br><span class="line">INFO Generated: fancybox/helpers/jquery.fancybox-thumbs.js</span><br><span class="line">INFO Generated: fancybox/helpers/jquery.fancybox-media.js</span><br><span class="line">INFO Generated: fancybox/helpers/jquery.fancybox-thumbs.css</span><br><span class="line">INFO Generated: js/script.js</span><br><span class="line">INFO Generated: css/fonts/FontAwesome.otf</span><br><span class="line">INFO Generated: css/fonts/fontawesome-webfont.woff</span><br><span class="line">INFO Generated: archives/2019/03/index.html</span><br><span class="line">INFO Generated: css/fonts/fontawesome-webfont.eot</span><br><span class="line">INFO Generated: css/fonts/fontawesome-webfont.ttf</span><br><span class="line">INFO Generated: css/fonts/fontawesome-webfont.svg</span><br><span class="line">INFO Generated: css/images/banner.jpg</span><br><span class="line">INFO Generated: 2019/03/20/hello-world/index.html</span><br><span class="line">INFO 28 files generated in 592 ms</span><br></pre></td></tr></table></figure> <h4 id="Step-3-Metasite-Init"><a href="#Step-3-Metasite-Init" class="headerlink" title="Step 3: Metasite Init"></a>Step 3: Metasite Init</h4><p>Just press enter if you don’t want to change something.</p> <figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">metasite init</span><br></pre></td></tr></table></figure> <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">? Site&apos;s Public Directory: ./public</span><br><span class="line">? Site&apos;s ID: mysite</span><br><span class="line">? Site Owner&apos;s RSA Private Key, leave blank to generate one:</span><br></pre></td></tr></table></figure> <p>From this step, we are to upload the blog website to blockchain.</p> <p>It’s not limited to hexo blog, any static website can be uploaded.</p> <h4 id="Step-4-Upload-Website"><a href="#Step-4-Upload-Website" class="headerlink" title="Step 4: Upload Website"></a>Step 4: Upload Website</h4><p>You need to prepare some satoshis to upload thing to blockchain.</p> <p>A bitcoin private key which have satoshis in is required.</p> <p>First, build sitemap and upload files.</p> <figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">metasite sitemap -k [Your Bitcoin Private Key]</span><br></pre></td></tr></table></figure> <p>Or paste it when asked.</p> <figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">metasite sitemap</span><br></pre></td></tr></table></figure> <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br></pre></td><td class="code"><pre><span class="line">? Please Specify Bitcoin Private Key: [hidden]</span><br><span class="line">[+]Indexing files in ./public</span><br><span class="line">[+]Searching existing files on blockchain</span><br><span class="line"> fancybox/fancybox_loading.gif Found on chain</span><br><span class="line"> fancybox/blank.gif Found on chain</span><br><span class="line"> fancybox/jquery.fancybox.css Found on chain</span><br><span class="line"> fancybox/helpers/jquery.fancybox-thumbs.js Found on chain</span><br><span class="line"> js/script.js Found on chain</span><br><span class="line"> fancybox/helpers/jquery.fancybox-media.js Found on chain</span><br><span class="line"> fancybox/fancybox_overlay.png Found on chain</span><br><span class="line"> fancybox/fancybox_sprite@2x.png Found on chain</span><br><span class="line"> fancybox/fancybox_sprite.png Found on chain</span><br><span class="line"> fancybox/helpers/fancybox_buttons.png Found on chain</span><br><span class="line"> fancybox/helpers/jquery.fancybox-buttons.css Found on chain</span><br><span class="line"> fancybox/helpers/jquery.fancybox-buttons.js Found on chain</span><br><span class="line"> fancybox/fancybox_loading@2x.gif Found on chain</span><br><span class="line"> fancybox/helpers/jquery.fancybox-thumbs.css Found on chain</span><br><span class="line"> fancybox/jquery.fancybox.pack.js Found on chain</span><br><span class="line"> css/style.css Found on chain</span><br><span class="line"> css/fonts/fontawesome-webfont.eot Found on chain</span><br><span class="line"> fancybox/jquery.fancybox.js Found on chain</span><br><span class="line"> css/fonts/fontawesome-webfont.woff Found on chain</span><br><span class="line"> css/fonts/FontAwesome.otf Found on chain</span><br><span class="line"> css/fonts/fontawesome-webfont.ttf Found on chain</span><br><span class="line"> css/fonts/fontawesome-webfont.svg Found on chain</span><br><span class="line"> css/images/banner.jpg Found on chain</span><br><span class="line">[+]Building upload transactions</span><br><span class="line">Skiping css/fonts/fontawesome-webfont.eot</span><br><span class="line">Skiping css/fonts/fontawesome-webfont.svg</span><br><span class="line">Skiping css/fonts/fontawesome-webfont.ttf</span><br><span class="line">Skiping css/fonts/fontawesome-webfont.woff</span><br><span class="line">Skiping css/fonts/FontAwesome.otf</span><br><span class="line">Skiping css/images/banner.jpg</span><br><span class="line">Skiping css/style.css</span><br><span class="line">Skiping fancybox/blank.gif</span><br><span class="line">Skiping fancybox/fancybox_loading.gif</span><br><span class="line">Skiping fancybox/fancybox_loading@2x.gif</span><br><span class="line">Skiping fancybox/fancybox_overlay.png</span><br><span class="line">Skiping fancybox/fancybox_sprite.png</span><br><span class="line">Skiping fancybox/fancybox_sprite@2x.png</span><br><span class="line">Skiping fancybox/helpers/fancybox_buttons.png</span><br><span class="line">Skiping fancybox/helpers/jquery.fancybox-buttons.css</span><br><span class="line">Skiping fancybox/helpers/jquery.fancybox-buttons.js</span><br><span class="line">Skiping fancybox/helpers/jquery.fancybox-media.js</span><br><span class="line">Skiping fancybox/helpers/jquery.fancybox-thumbs.css</span><br><span class="line">Skiping fancybox/helpers/jquery.fancybox-thumbs.js</span><br><span class="line">Skiping fancybox/jquery.fancybox.css</span><br><span class="line">Skiping fancybox/jquery.fancybox.js</span><br><span class="line">Skiping fancybox/jquery.fancybox.pack.js</span><br><span class="line">Skiping js/script.js</span><br><span class="line">[+]Saving Sitemap to sitemap.json</span><br><span class="line">[+]Broadcasting upload transactions</span><br><span class="line"> Broadcasting e6a1a4eb72fd092cc989c90ac095aabb95b815a82e2ff98954f0ada736925060</span><br><span class="line"> Broadcasting 395f566d17619af872928db0c90f0a466505a96a79ba6de58cc58f12a3caf1d5</span><br><span class="line"> Broadcasting 32bc8d7bd7ad783ed6cce9bc0560ae046caeef3046179f2db459f821f6505058</span><br><span class="line"> Broadcasting 9e954deca98d391cd9f165591d54696b9497819c22041c8c4f5ba51c1e0a133a</span><br><span class="line"> Broadcasting 69237de76d724e5c95488fde0c1f4a9c6198133c7b5789724a5069f3db58ee5a</span><br><span class="line"> 395f566d17619af872928db0c90f0a466505a96a79ba6de58cc58f12a3caf1d5 Broadcasted</span><br><span class="line"> 32bc8d7bd7ad783ed6cce9bc0560ae046caeef3046179f2db459f821f6505058 Broadcasted</span><br><span class="line"> 9e954deca98d391cd9f165591d54696b9497819c22041c8c4f5ba51c1e0a133a Broadcasted</span><br><span class="line"> 69237de76d724e5c95488fde0c1f4a9c6198133c7b5789724a5069f3db58ee5a Broadcasted</span><br><span class="line"> e6a1a4eb72fd092cc989c90ac095aabb95b815a82e2ff98954f0ada736925060 Broadcasted</span><br><span class="line"> All TX Broadcasted</span><br><span class="line">[+]Hammer Threw</span><br></pre></td></tr></table></figure> <p>Then, upload the sitemap to blockchain.</p> <figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">metasite publish</span><br></pre></td></tr></table></figure> <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">? Please Specify Bitcoin Private Key: [hidden]</span><br><span class="line">SiteID: mysite</span><br><span class="line">RSA Key File: ./.credentials/key.pem</span><br><span class="line">Prefix: 8e961560133776104f375b492aa491b9abb88cd6b75ab21b6c3bd6197d025805</span><br><span class="line">Broadcasting Sitemap TX</span><br><span class="line">Broadcasted, TXID: 8791f0ee038af2d09f7a38c06ce0578f520bee2cd9510314962afe6ae7fc8bdc</span><br><span class="line">Please wait for a confirmation...</span><br></pre></td></tr></table></figure> <p>Finally, create and upload a entrance point on blockchain.</p> <figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">metasite entrance</span><br></pre></td></tr></table></figure> <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">? Please Specify Bitcoin Private Key: [hidden]</span><br><span class="line">Broadcasting Entrance TX</span><br><span class="line">Broadcasted, Entrance TXID: 62df93c24ef578dbf65103478c8ff0407e81c5211351ed6298df2eced7490951</span><br><span class="line">? Open in Browser? Yes</span><br></pre></td></tr></table></figure> <p>The blog we built is here:</p> <p><a href="https://bico.media/62df93c24ef578dbf65103478c8ff0407e81c5211351ed6298df2eced7490951" target="_blank" rel="noopener">https://bico.media/62df93c24ef578dbf65103478c8ff0407e81c5211351ed6298df2eced7490951</a></p> <h3 id="Update-Your-Blog"><a href="#Update-Your-Blog" class="headerlink" title="Update Your Blog"></a>Update Your Blog</h3><p>You can update your blog content with hexo, and upload the update with metasite.</p> <figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">hexo generate</span><br><span class="line">metasite sitemap</span><br><span class="line">metasite publish</span><br></pre></td></tr></table></figure> <h3 id="If-I-have-a-website-more-than-a-blog…"><a href="#If-I-have-a-website-more-than-a-blog…" class="headerlink" title="If I have a website more than a blog…"></a>If I have a website more than a blog…</h3><p>Just follow step 3-4.</p> <p>The metasite tool just upload <code>./public</code> to blockchain and don’t care what it is.</p> </div> <footer class="article-footer"> <a data-url="./2019/03/20/How-to-Build-an-On-chain-Blog/" data-id="cjyp709tu0004j8uf1pyf3kxh" class="article-share-link">Share</a> </footer> </div> </article> <article id="post-How-to-Upload-Big-Files" class="article article-type-post" itemscope itemprop="blogPost"> <div class="article-meta"> <a href="2019/03/19/How-to-Upload-Big-Files/" class="article-date"> <time datetime="2019-03-19T11:46:24.000Z" itemprop="datePublished">2019-03-19</time> </a> </div> <div class="article-inner"> <header class="article-header"> <h1 itemprop="name"> <a class="article-title" href="2019/03/19/How-to-Upload-Big-Files/">How to Upload Big Files</a> </h1> </header> <div class="article-entry" itemprop="articleBody"> <h3 id="Background"><a href="#Background" class="headerlink" title="Background"></a>Background</h3><p>Sometimes we need to upload files much bigger than 100KB.</p> <p>In this situation, we need to chunk it up to many chunks.</p> <p>However, due to the 25 tx limit, if we upload them one by one, it will takes a lot of time.</p> <p>A better upload method is recommended.</p> <h3 id="Upload-Method"><a href="#Upload-Method" class="headerlink" title="Upload Method"></a>Upload Method</h3><p>Input:</p> <ol> <li>private key</li> <li>files</li> </ol> <p>Logic:</p> <ol> <li><p>acquire utxos</p> </li> <li><p>read files as chunks</p> </li> <li><p>generate chunk key by privkey.childKey(chunk’s md5)</p> </li> <li><p>build a master tx from utxo, the tx has</p> <p>inputs from utxos</p> <p>outputs for each file chunk with adequate satoshis</p> <p>change output</p> </li> <li><p>build chunk tx, which has only 1 data output.</p> </li> <li>broadcast them all</li> </ol> <p>If you reach the 25 tx limits, just wait for the confirmation of master tx, then all chunk tx will be accepted.</p> <p>BTW, you can build and broadcast master tx by moneybutton actually.<br>Then, handle the chunk txs.</p> <h3 id="Examples"><a href="#Examples" class="headerlink" title="Examples"></a>Examples</h3><p>Master transaction example:<br> <a href="https://bchsvexplorer.com/tx/3937d759f4a31e1b5eee2e7c192f289f39199ce9b7913bee712bbc9510a511ea" target="_blank" rel="noopener">https://bchsvexplorer.com/tx/3937d759f4a31e1b5eee2e7c192f289f39199ce9b7913bee712bbc9510a511ea</a><br>chunk transaction example(1 in 1 out):<br> <a href="https://bchsvexplorer.com/tx/73192bb6bf6dec79d359e49b9b41355ad83ffec3adbbaf27b71a0ac4668d31d4" target="_blank" rel="noopener">https://bchsvexplorer.com/tx/73192bb6bf6dec79d359e49b9b41355ad83ffec3adbbaf27b71a0ac4668d31d4</a></p> <p>Some code example:</p> <p> <a href="https://github.com/monkeylord/MetaSite-Hammer" target="_blank" rel="noopener">https://github.com/monkeylord/MetaSite-Hammer</a></p> </div> <footer class="article-footer"> <a data-url="./2019/03/19/How-to-Upload-Big-Files/" data-id="cjyp709tp0001j8uf3apk6il3" class="article-share-link">Share</a> </footer> </div> </article> <article id="post-Metanet应用开发" class="article article-type-post" itemscope itemprop="blogPost"> <div class="article-meta"> <a href="2019/03/11/Metanet应用开发/" class="article-date"> <time datetime="2019-03-11T08:05:42.000Z" itemprop="datePublished">2019-03-11</time> </a> </div> <div class="article-inner"> <header class="article-header"> <h1 itemprop="name"> <a class="article-title" href="2019/03/11/Metanet应用开发/">Metanet应用开发</a> </h1> </header> <div class="article-entry" itemprop="articleBody"> <h3 id="课程准备"><a href="#课程准备" class="headerlink" title="课程准备"></a>课程准备</h3><ol> <li>可用的MoneyButton钱包</li> <li>顺手的文本编辑器(记事本也可以)</li> </ol> <h3 id="背景知识"><a href="#背景知识" class="headerlink" title="背景知识"></a>背景知识</h3><p>开始理解Metanet应用开发前,首先了解一些比特币的基础知识,这样可以构成理解的基础。</p> <p>最广泛的理解里,比特币网络基于共识运行。那么,共识本身是什么呢?背后有哪些组成呢?</p> <p>时间有限,这里不一一解释,仅关注对于应用开发入门比较重要的部分,他们是<code>UTXO模型</code>、 <code>P2P网络</code> 以及<code>OP_RETURN</code></p> <h4 id="UTXO模型"><a href="#UTXO模型" class="headerlink" title="UTXO模型"></a>UTXO模型</h4><p>众所周知的是比特币具有一个个<code>地址</code>,用户掌握<code>私钥</code>,通过<code>签名</code>去花费比特币,有时还会产生<code>找零</code>。</p> <p>大部分时候,我们使用作为现金的比特币时是不需要知道其怎么工作的,这些事情由钱包处理。</p> <p>但是,钱到底是如何表示的呢?</p> <p>我们需要理解交易,或者说“事务”,这是比特币网络里的第一公民,连区块链都是从属于它的。区块链是比特币网络中的一部分,但不是全部,整个混合起来的比特币网络,就叫做metanet。</p> <p>什么是交易呢?</p> <p>交易就是一个输入输出的集合,输出就是这笔交易创造的<code>交易输出</code>,也就是钱包里看到的比特币。输入则是其他交易的<code>交易输出</code>,我们可以看到输入输出之间是一一对应的,不同交易之间通过输入输出联系到了一起,构成了一张有向无环图。这个图的末端,有一些没有指向<code>交易输入</code>的<code>交易输出</code>,我们把它们称之为<code>未花费交易输出</code>,也就是钱包里看到的比特币余额。</p> <p>另外还有一些特殊的输出,比如说交易备注,也就是OP_RETURN,也是一种输出,不过这种输出的金额为0,已经无法继续被花费,所以就不算是未花费了,不算在UTXO里,但是会被记录在区块链中。</p> <p>最近BSV网络玩出了许多花样,大部分就是基于的OP_RETURN,在比特币网络中永久留下了不可被篡改的交易备注作为数据。</p> <h4 id="P2P节点网络"><a href="#P2P节点网络" class="headerlink" title="P2P节点网络"></a>P2P节点网络</h4><h5 id="什么是P2P节点网络。"><a href="#什么是P2P节点网络。" class="headerlink" title="什么是P2P节点网络。"></a>什么是P2P节点网络。</h5><p>BT下载很多人都用过,电驴也有很多人用过,这些网络就是P2P网络。</p> <p>P2P网络是一种由许多平等地位的节点组成的网络,每个节点不论其是何种类型的,都可以通过P2P协议接入到这个网络中。</p> <p>节点们在比特币协议中地位是平等的。不过需要注意这种平等并非民主主义下所谓的”结果正义“的平等,而是在自由意志主义意义下,人人都能够凭借自己的实力进行充分的竞争的”机会平等“。</p> <p>有的节点擅长挖矿,那么它就可以成为专业的矿工节点,有的节点擅长记录,那么它可以成为存储节点,有的节点专注于提高网络连通性,那么它会成为很多节点间的中继,有的节点向网络外提供服务,那么它就是节点网络对外的接口节点。理想状态下,比特币网络通过充分的市场竞争,会形成专业分工。</p> <p>并不是每个节点都要具有同样的算力,同样的带宽,同样的存储能力,那是树莓派平均主义。树莓派平均主义不能提供节点竞争的环境,节点技术无法自发地向前发展,从而完全取决于开发者的喜好。就是这种思想就是导致了BSV打出103M区块时BTC却还在1M踌躇不前的原因。</p> <h5 id="比特币节点网络的协议"><a href="#比特币节点网络的协议" class="headerlink" title="比特币节点网络的协议"></a>比特币节点网络的协议</h5><p>那么一个新的节点是如何接入到节点网络,广播数据并接收广播的呢?</p> <p>首先,你需要知道其他节点在哪里,才能连接到其他节点。</p> <p>因此比特币协议里设计了一个伙伴发现机制,即,你向你连接的节点请求获得它知道的节点。这样随着你的连接,你就能得知足够的伙伴。</p> <p>不过问题来了,初始的伙伴如何去发现呢?这就要靠代码里内置的DNS节点,它是最初的伙伴。</p> <p>伙伴节点发现-DNS种子<a href="https://github.com/bitcoin-sv/bitcoin-sv/blob/master/src/seeder/main.cpp#L445" target="_blank" rel="noopener">https://github.com/bitcoin-sv/bitcoin-sv/blob/master/src/seeder/main.cpp#L445</a></p> <p>当你连接到伙伴节点后,你们就开始一系列的数据交换了,交易、数据,各种各样的消息在整个网络中传播。</p> <p>比特币节点P2P网络协议:<a href="https://en.bitcoin.it/wiki/Protocol_documentation" target="_blank" rel="noopener">https://en.bitcoin.it/wiki/Protocol_documentation</a></p> <h5 id="技术上如何理解比特币网络"><a href="#技术上如何理解比特币网络" class="headerlink" title="技术上如何理解比特币网络"></a>技术上如何理解比特币网络</h5><p>可以注意到的是,数据在交换的时候,仅仅是数据本身,并不包含数据来源,因此就像一滴水滴到大海里,迅速扩散,而无法溯源。当数据进入到节点网络中时,它就可以被认为是公共数据了。</p> <p>因此,比特币的节点网络是一个公共数据池,当你向这个数据池中发送数据,数据就变成公共数据了,任何节点都可以取出,且不可溯源。这个数据池,也可以认为是全球联通的一条数据总线。这是Metanet应用开发的一个基础。</p> <p>另外需要注意到的事情是,P2P节点网络是用于中继交易和区块的一种形式。但这并不是比特币网络的唯一形式,实际上,任何对于交易(Transaction)的承载,都是比特币网络的一部分。比特币是允许两个个体之间直接私下进行一系列TX交易而只把最终结果广播的,这被称为P2P交易。</p> <p>实际上不同的网络之间也可以私下处理交易,而把最终交易广播,我们把最强PoW保证的P2P节点网络认为是主网,主网里的数据是公共且不可篡改的。但是任何私下的网络都是不被禁止的,从比特币设计之初,不同网络的名称标识在比特币协议中就有专门的字段,意味着比特币(可以)是一个具有多个网络的系统。</p> <p>TX是一等公民,可以出入任何网络。PoW区块链网络只是作为主网,作为由算力保证的熵最低的网络,并作为最终TX有效无效的判断。而私下的PoS或其他的链或者局域网络,都可以根据需要接入到系统之中,只要你遵循同样的TX格式并共享同一套UTXO账本(可能会因为和主网冲突而被无效掉)。</p> <p>你可以任意创建你希望的新网络,来以你希望的形式来处理局部的TX交换。注意这不是分叉,因为PoW主网是最终仲裁,只要你遵守这一点,你就还在比特币的系统之中。</p> <p>理解这一点,你就理解了比特币网络是如何在星际空间中被使用的,不同的局域空间中可以拥有自己的网络。</p> <p>当然,甚至比特币的<code>主网</code>也是竞争产生的,未来PoW算力的竞争可能会在地球和火星两个网络之间发生,不过这就很远了。</p> <h4 id="OP-RETURN"><a href="#OP-RETURN" class="headerlink" title="OP_RETURN"></a>OP_RETURN</h4><p>OP_RETURN是一种特殊的输出,它是一个仅包含OP_RETURN和PUSH指令的脚本。我们用&lt;&gt;来表示push数据,那么OP_RETURN就是</p> <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">OP_RETURN &lt;Field1&gt; &lt;Field2&gt; ....</span><br></pre></td></tr></table></figure> <p>因此,我们可以很轻易地把一个数据结构</p> <figure class="highlight"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">&#123;</span><br><span class="line"> key1: value1,</span><br><span class="line"> key2: value2</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure> <p>双向映射到</p> <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">OP_RETURN &lt;value1&gt; &lt;value2&gt;</span><br></pre></td></tr></table></figure> <p>这实际上就是BitDB所作的事情之一</p> <p>所以,总结一下,通过OP_RETURN和P2P节点网络,我们得到了一个全球同步的公共数据库,这个公共数据库可以</p> <blockquote> <p>在任何位置访问,自带CDN</p> <p>任何人都可以付费写任何数据</p> <p>一旦写入不用担心被篡改</p> <p>几乎不存在宕机的可能性</p> <p>大约每10分钟备份一次</p> </blockquote> <h3 id="Metanet应用开发"><a href="#Metanet应用开发" class="headerlink" title="Metanet应用开发"></a>Metanet应用开发</h3><p>其实理解了上述内容,有些人就大概已经明白基于Metanet可以做哪些应用了。</p> <p>我们来简单定义一下Metanet应用,这个定义并不准确,因为比特币上一切都可能发生。</p> <h4 id="什么是Metanet应用?"><a href="#什么是Metanet应用?" class="headerlink" title="什么是Metanet应用?"></a>什么是Metanet应用?</h4><p>Metanet应用是接入到比特币系统中,以Transaction记录数据或逻辑的应用。</p> <p>它可以是个HTML应用,可以是个手机应用,可以是物联网设备中的应用,也可以是区块链游戏。</p> <p>它可能是有中心的,也可能是完全无服务器的。</p> <h4 id="为什么要做Metanet应用?"><a href="#为什么要做Metanet应用?" class="headerlink" title="为什么要做Metanet应用?"></a>为什么要做Metanet应用?</h4><p>Metanet应用减少了中间环节,把业务高度抽象。不需要部署CDN,全球可用,不同节点间随时保持同步。</p> <p>Metanet保证应用高度可用,即便服务器下线,也可以很轻易地异地重建(Planaria)。</p> <p>Metanet应用可以采用无服务端的架构,数据完全由用户产生,由用户使用,由用户管理,设计好协议和业务逻辑,就可以自组织地运行下去。</p> <p>Metanet应用可以以很低的成本维护,甚至于免维护。</p> <p>Metanet应用原生支持支付,信息易于转换成价值。</p> <p>这提供了理想的商业模式,使用即付费,一旦开发完成,相当于挖出了一条河道,持续赚钱。</p> <h4 id="什么应用适合做成Metanet应用?"><a href="#什么应用适合做成Metanet应用?" class="headerlink" title="什么应用适合做成Metanet应用?"></a>什么应用适合做成Metanet应用?</h4><p>信任类应用</p> <blockquote> <p>电子证据、票据、可审计的历史记录</p> </blockquote> <p>信息类应用</p> <blockquote> <p>内容分发、数据分享、数据产生与消费</p> </blockquote> <p>支付类应用</p> <blockquote> <p>数字内容销售、按次付费、全球支付</p> </blockquote> <p>分布式应用</p> <blockquote> <p>无服务器应用、自组织平台</p> </blockquote> <p>其他各种各样的应用</p> <h4 id="怎么做Metanet应用?"><a href="#怎么做Metanet应用?" class="headerlink" title="怎么做Metanet应用?"></a>怎么做Metanet应用?</h4><p>Metanet应用设计分三步:</p> <ol> <li>设计数据结构和协议</li> <li>设计UI</li> <li>将数据和UI对接起来</li> </ol> <p>每一步都可以很复杂也可以很简单,取决于你做什么样的应用,下面我们来一个个地实验。</p> <p>首先,第一个实验,关于内容上链,把HTML页面上链。</p> <blockquote> <p>新建一个HTML页面,或者把浏览器上一个页面另存为html文件</p> <p>在b.bitdb.network选择该html文件上传,使用moneybutton支付</p> <p>在b.bitdb.network页面上方会出现该文件,点击bico.media的连接</p> </blockquote> <p>然后,第二个实验,读取链上的数据。</p> <blockquote> <p>进入 <a href="https://bitgraph.network/explorer/ewogICJ2IjogMywKICAicSI6IHsKICAgICJmaW5kIjogeyJvdXQuaDEiOiI2ZDAyIn0sCiAgICAibGltaXQiOiAxMAogIH0KfQ==" target="_blank" rel="noopener">https://bitgraph.network/explorer/ewogICJ2IjogMywKICAicSI6IHsKICAgICJmaW5kIjogeyJvdXQuaDEiOiI2ZDAyIn0sCiAgICAibGltaXQiOiAxMAogIH0KfQ==</a></p> <p>6d02是发布memo的协议,memo协议在这里<a href="https://memo.cash/protocol" target="_blank" rel="noopener">https://memo.cash/protocol</a></p> <p>接下来,根据memo.cash的协议,查询memo的其他内容</p> </blockquote> <p>第三个实验,从HTML上查询memo内容。下载该HTML页面,观看查询结果,打开编辑器,编辑query刷新查看效果。</p> <p>第四个实验,数据对象的映射。打开该HTML页面,观察查询结果,编辑query以查询其他memo协议。</p> <p>第五个实验,使用BitSocket实时监听数据。</p> <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">https://genesis.bitdb.network/socket/1FnauZ9aUH2Bex6JzdcV4eNX7oLSSEbxtN/ew0KICAidiI6IDMsDQogICJxIjogew0KICAgICJmaW5kIjogeyAib3V0LmIwIjogeyAib3AiOiAxMDYgfSwgIm91dC5oMSI6ICI2ZDAyIiB9LA0KICAgICJwcm9qZWN0IjogeyAib3V0LiQiOiAxIH0NCiAgfSwNCiAgInIiOiB7DQogICAgImYiOiAiWyAuW10gfCB7bXNnOiAub3V0WzBdLnMyfSBdIg0KICB9DQp9</span><br></pre></td></tr></table></figure> <p>第六个实验,使用datapay发送数据。</p> <p>第七个实验,使用MoneyButton发送数据。</p> <h4 id="已经有了哪些Metanet应用和协议"><a href="#已经有了哪些Metanet应用和协议" class="headerlink" title="已经有了哪些Metanet应用和协议"></a>已经有了哪些Metanet应用和协议</h4><p><a href="https://github.com/monkeylord/awesome-bitcoin-sv" target="_blank" rel="noopener">https://github.com/monkeylord/awesome-bitcoin-sv</a></p> <h4 id="最后,别忘了安全性的考虑。"><a href="#最后,别忘了安全性的考虑。" class="headerlink" title="最后,别忘了安全性的考虑。"></a>最后,别忘了安全性的考虑。</h4> </div> <footer class="article-footer"> <a data-url="./2019/03/11/Metanet应用开发/" data-id="cjyp709tv0005j8ufr2ovr782" class="article-share-link">Share</a> </footer> </div> </article> <article id="post-The-Siteloader-is-Released" class="article article-type-post" itemscope itemprop="blogPost"> <div class="article-meta"> <a href="2019/03/04/The-Siteloader-is-Released/" class="article-date"> <time datetime="2019-03-04T05:21:55.000Z" itemprop="datePublished">2019-03-04</time> </a> </div> <div class="article-inner"> <header class="article-header"> <h1 itemprop="name"> <a class="article-title" href="2019/03/04/The-Siteloader-is-Released/">The Siteloader is Released.</a> </h1> </header> <div class="article-entry" itemprop="articleBody"> <p>Now, I‘ve released siteloader.</p> <p>It’s easy to use.</p> <p>See <a href="https://github.com/monkeylord/MetaSite-Loader" target="_blank" rel="noopener">https://github.com/monkeylord/MetaSite-Loader</a></p> <p>I don’t quite sure how to name a website on metanet, maybe ‘metasite’ ?</p> </div> <footer class="article-footer"> <a data-url="./2019/03/04/The-Siteloader-is-Released/" data-id="cjyp709tx0008j8ufe88gulec" class="article-share-link">Share</a> </footer> </div> </article> <article id="post-The-First-Metanet-Blog" class="article article-type-post" itemscope itemprop="blogPost"> <div class="article-meta"> <a href="2019/03/01/The-First-Metanet-Blog/" class="article-date"> <time datetime="2019-03-01T05:13:19.000Z" itemprop="datePublished">2019-03-01</time> </a> </div> <div class="article-inner"> <header class="article-header"> <h1 itemprop="name"> <a class="article-title" href="2019/03/01/The-First-Metanet-Blog/">The First Metanet Blog</a> </h1> </header> <div class="article-entry" itemprop="articleBody"> <p>Welcome to my blog. This is the first blog site on metanet.</p> <p>I am Monkeylord, a metanet developer.</p> <h3 id="Can-I-build-a-blog-on-metanet-like-you"><a href="#Can-I-build-a-blog-on-metanet-like-you" class="headerlink" title="Can I build a blog on metanet like you?"></a>Can I build a blog on metanet like you?</h3><p>Yes.</p> <p>I’m packaging all the magic into a website publish tool.</p> <p>The tool will be open-sourced soon.</p> <p>You can watch me on <a href="https://github.com/monkeylord/MetaNet-Website" target="_blank" rel="noopener">github</a>.</p> <p>It’s logically a blog generated by hexo, what you need is a command to sync it on metanet.</p> </div> <footer class="article-footer"> <a data-url="./2019/03/01/The-First-Metanet-Blog/" data-id="cjyp709tw0007j8uftngyurp0" class="article-share-link">Share</a> </footer> </div> </article> </section> <aside id="sidebar"> <div class="widget-wrap"> <h3 class="widget-title">Tags</h3> <div class="widget"> <ul class="tag-list"><li class="tag-list-item"><a class="tag-list-link" href="tags/bsv/">bsv</a></li></ul> </div> </div> <div class="widget-wrap"> <h3 class="widget-title">Tag Cloud</h3> <div class="widget tagcloud"> <a href="tags/bsv/" style="font-size: 10px;">bsv</a> </div> </div> <div class="widget-wrap"> <h3 class="widget-title">Archives</h3> <div class="widget"> <ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="archives/2019/07/">July 2019</a></li><li class="archive-list-item"><a class="archive-list-link" href="archives/2019/04/">April 2019</a></li><li class="archive-list-item"><a class="archive-list-link" href="archives/2019/03/">March 2019</a></li></ul> </div> </div> <div class="widget-wrap"> <h3 class="widget-title">Recent Posts</h3> <div class="widget"> <ul> <li> <a href="2019/07/30/Bitcom常见协议解析/">Bitcom常见协议解析</a> </li> <li> <a href="2019/04/14/Connecting-to-P2P-Network/">Connecting to P2P Network</a> </li> <li> <a href="2019/03/20/How-to-Build-an-On-chain-Blog/">How to Build an On-chain Blog</a> </li> <li> <a href="2019/03/19/How-to-Upload-Big-Files/">How to Upload Big Files</a> </li> <li> <a href="2019/03/11/Metanet应用开发/">Metanet应用开发</a> </li> </ul> </div> </div> </aside> </div> <footer id="footer"> <div class="outer"> <div id="footer-info" class="inner"> &copy; 2019 Monkeylord<br> Powered by <a href="http://hexo.io/" target="_blank">Hexo</a> </div> </div> </footer> </div> <nav id="mobile-nav"> <a href="index.html" class="mobile-nav-link">Home</a> <a href="archives/" class="mobile-nav-link">Archives</a> </nav> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <link rel="stylesheet" href="fancybox/jquery.fancybox.css"> <script src="fancybox/jquery.fancybox.pack.js"></script> <script src="js/script.js"></script> </div> </body> </html>
    https://whatsonchain.com/tx/b79df79b57b2a0c28edfa8f9cc96560446eaa41e7705f876fc55ba76731b7188