# 如何建立你自己的SCP App：去中心化的新闻媒体

By [W3.Hitchhiker](https://paragraph.com/@w3hitchhiker) · 2022-01-17

---

原文链接：

[https://mirror.xyz/0xDc19464589c1cfdD10AEdcC1d09336622b282652/w5jkBRo6Z0sgT2e5hxzd7aEoKdyixg6mAbV8JmLHoHs](https://mirror.xyz/0xDc19464589c1cfdD10AEdcC1d09336622b282652/w5jkBRo6Z0sgT2e5hxzd7aEoKdyixg6mAbV8JmLHoHs)

译者：Evelyn｜W3.Hitchhiker

在以太坊上创建一个去中心化的新闻媒体内容平台是很困难的，因为高额的费用让任何形式的存储都望而却步。Arweave为降低去中心化存储的成本提供了一种新的可能性，1GB的永久性数据存储只需15美元。使用Arweave作为Web3基础设施，开发者可以轻松建立去中心化的媒体内容平台。

Arweave的永久存储开启了区块链的新时代：在没有中心化的情况下分发数据和内容。使用基于[存储的共识范式](https://mirror.xyz/0xDc19464589c1cfdD10AEdcC1d09336622b282652/KCYNKCIhFvTZ1DmD7IpXr3p8di31ecC283HgMDqasmU)进行内容分发，读者只需要信任开源的智能合约代码，就可以通过去中心化的方式获得未经篡改和审查的内容媒体。读完这篇文章后，你将了解到如何将媒体内容去中心化，并使其随处可得。同时，我们可以使用代币经济学来将内容创作过程去中心化。

缺少数据的去中心化
---------

传统的内容分发平台是单一节点的集中存储，随着数据量的增长或数据审查的进行，一些内容会被主动或被动删除或丢失。同时，平台在未来可能面临关闭，关闭后用户将无法访问前期存在的信息。

![](https://storage.googleapis.com/papyrus_images/485192f0f32249420555589fc51295c8bbfdb4faa9234abc0734ce4868c02e17.png)

对于Web2时代的新闻媒体来说，如上图所示，记者（橙色的）将他们的行业洞察力写成内容，通过中心化的节点为读者（蓝色的）提供媒体服务。这些内容被节点优雅地呈现出来，用户只需点击网站的URL，就可以得到他们想要的内容和数据。

![](https://storage.googleapis.com/papyrus_images/c934b6ed74792b54f53a2b1db7c83c08e313b7cefc4b54240118061f84db6f76.png)

但不幸的是，当中心化节点被关闭时，读者再访问内容的话就会变得很困难，甚至失去对历史内容（包括他们已经读过的文章）的访问权。

使用Arweave进行存储可以确保数据永远不会丢失，所以数据去中心化很容易实现。内容发行商只需支付一定的AR就可以将数据存储在Arweave上。然而，仅仅是永久地存储数据是不够的。大量的冗余数据被永久存储，读者无法像开发者那样编写代码或脚本来过滤不需要的数据，并将有用的数据转化为内容。他们也没有能力编写HTML和CSS代码，将原始文章数据可视化为可读内容。当然，我们可以直接将HTML文件存储到Arweave，但即使这些数据已经是一个网页，它仍然无法在用户的设备中直接被索引和搜索。

单纯的将数据存储去中心化并不能解决数据的可读性（可视化）问题。在建立去中心化的新闻媒体时，开发者不仅要考虑永久性的数据存储，还要考虑数据的可读性和可视化。SCP是内容去中心化的最后一步，让大家更容易享受Web3的体验。

新闻媒体的去中心化
---------

一个完整的去中心化的新闻媒体不仅应该在区块链上存储数据，而且还应该提供数据的可视化。使用SCP可以增强此体验：SCP允许任何人在任何时候在自己的设备上运行开源的链外智能合约代码，恢复所有文章的历史状态并将所有文章内容显示到屏幕上。

去中心化的新闻媒体需要做两件事：

1.  开源节点的代码，这样任何人都可以得到代码并重新运行该节点
    
2.  将节点的所有数据上传到Arweave，开源节点可以自动获取数据并将数据可视化为可读内容
    

![](https://storage.googleapis.com/papyrus_images/b91873e3999e23f68d8a52cbaef4677af80df293a976d0c35d67b23563ca7e12.png)

在上图中，核心节点是新闻的分发端（distribution end）。它类似于传统的架构：记者（黄色的）提供内容，通过新闻核心节点展示给读者（蓝色的）。核心节点必须是一个开源的、具有数据上传功能的中心节点。核心节点负责向用户展示数据，同时将记者提供的内容逐一上传至Arweave。

核心节点的开源性质使媒体平台成为一个智能合约。新闻文章数据被不断上传到Arweave的区块。下载并运行代码的读者或运营商可以自动下载Arweave上新添加的数据，并成为分发节点，提供内容显示服务。分发节点只需要同步到最新的Arweave区块中的数据，以保持内容的最新性。

如果一个去中心化的新闻媒体使用了上述架构，当媒体被关闭时，任何人都可以利用Arweave区块链上的数据和节点的开源代码来恢复和显示内容。

Web3新闻媒体不需要对Web2的进行大量修改，它只需要将原来的存储方案替换为Arweave上的永久存储。Web2的高性能开发中间件将成为链外智能合约的载体，提供无限的性能。

内容生产的去中心化
---------

上一节提到了内容的去中心化，任何被关闭的媒体都可以通过源代码和Arweave的永久数据恢复到正常的节点。然而，在上述架构中，内容提供商仍然需要通过中心化的节点提供数据上传服务，那么我们是否也可以让记者在不依赖中心化节点的情况下实现内容的去中心化化写作呢？答案是肯定的。

但如果每个人都向Arweave提交数据，而新闻媒体节点在没有访问控制的情况下加载数据，就会产生大量的垃圾新闻数据，降低阅读体验。上一节的解决方案是，内容只由核心节点上传，核心节点的管理员私钥有审核数据的能力。同时，其他开源节点从核心私钥的内容中下载数据，从而不允许垃圾新闻 来"污染 "新闻源。

这里有两个需要解决的问题：

1.  内容不应该被集中上传
    
2.  内容不应该被无意义的数据所淹没
    

解决这两个问题的关键是代币经济。开发者可以在开源节点中整合一个代币机制，专门用于集中上传内容和防止垃圾数据的功能。这是一个面向领域的PoS设计。

面向领域的PoS设计是被设计来通过利益证明解决特定领域的问题的。传统的PoS是为生成新区块和共识协议而设计的。这些设计在共识上花费了大量的精力，不再有能力为特定的业务领域开发权益证明。如果我们不得不使用传统的PoS来为特定的业务领域进行开发，那么设计架构将非常复杂和 "混乱"。

Arweave的永久存储机制使数据不可变（immutable）和可追踪（traceable），并且已经保证了共识数据的存储。在SCP上开发的开发者不需要为他们的应用担心共识问题，使用SCP可以让开发者完全专注于面向领域的PoS设计。

![](https://storage.googleapis.com/papyrus_images/9959ad370c7e14b4289a4311a028cd9f8793fe42d968a6b2b647948653c17824.png)

如何将内容上传去中心化？
------------

上图使用唯一的私钥进行数据分配。为了改进这一点，我们把按密钥过滤改为按代币过滤。

集成在开源节点内的本地代币被称为NEWS，每个NEWS都有唯一的所有权，并且可以被转让。所有权和所有权的转移可以使用基于存储的共识范式：拥有NEWS的账户可以向Arweave发送转移（金额 amount，到 to）的交易元数据，其他新闻节点可以从Arweave获得该转移信息并执行所有权转移。

基于SCP，在同一个Arweave区块的高度上，节点的状态是一致的。因此，NEWS的所有权跟随Arweave区块的变化，而我们的内容是通过Arweave分发的，所以代币所有权和内容具有相同的时间序列。

三个钱包地址A、B、C，都持有Arweave上的NEW，他们可以做如下内容的上传：

![](https://storage.googleapis.com/papyrus_images/f6ffe41bc4c124c0393aeaf6dcc6d1f3fbb83a237c3b33b4b155d189c34f0c5d.png)

从区块101到103，A和B都持有NEWS代币，A和B上传的内容可以被节点下载和计算；C没有NEWS代币，所以C上传的内容会被节点过滤掉。

在区块高度104，A向C传输1个NEWS。

在区块105和106中，节点不下载A在区块104之后上传的内容，因为A没有NEWS令牌；C持有NEWS，C的新内容可以被节点正常下载。

增加了代币机制后，新闻的上传不再依赖于单一的私钥，任何代币持有者都可以进行。当节点同步到最新的Arweave区块高度时，有效的文章就是A和B在区块102-103上传的文章和C在区块106上传的文章；C在103和A在105上传的内容不包括在节点中。

如何避免垃圾内容？
---------

代币不仅可以取代内容上传的钥匙，还可以解决垃圾内容的问题。我们可以赋予代币更多的功能，比如说投票。NEWS持有者可以对他们查看的内容进行投票，因此我们可以设计一个有效的投票激励机制来鼓励展示高质量的内容。通过投票机制，节点可以处理投票数据并对高质量的内容进行排名，既受欢迎和又高质量的数据将会出现在头条上，这也使得一个去中心化的民主推荐系统得以建立。

新闻媒体的质量可能取决于新闻组织（中心化组织）的质量控制能力。在社区成立之初，中心化组织可能需要持有51%以上的NEWS代币，以确保投票内容的质量。但随着去中心化社区的发展，代币会慢慢释放给杰出的记者。一个好的代币激励机制将使代币得到适当的分配和转移，这样优秀的记者将得到更多的奖励，高质量的内容将得到适当的 "标题"。

结论
--

Web3新闻媒体不仅创造了无法关闭的内容分发，而且还允许更可靠和高效的内容生产。使用SCP架构降低了去中心化新闻媒体的门槛，使普通网络用户更容易开发智能合约，使Web3的内容显示更容易，并使Web3更广泛地传播。

与代币经济为新闻媒体提供内容上传和垃圾邮件过滤的可能性一样，基于SCP的原生代币架构提供了更高的代币性能，确保了去中心化和原生Web3。 SCP也将降低Web3的参与和互动成本，而不是让用户为哪怕是一次投票的加分而支付超过20美元的gas费。

代币经济学还允许去中心化的新闻媒体节点成为DAO，链外新闻媒体节点成为智能合约。当我们运行一个新闻媒体节点时，我们可以信任节点的开源代码，节点的机制决定了其上生产的内容的质量和可靠性。最终，内容的生产和分发不再由权威机构决定，而是由我们信任的东西，即DAO——代码即法律。

---

*Originally published on [W3.Hitchhiker](https://paragraph.com/@w3hitchhiker/scp-app)*
