Dweb:使用 Aragon 创建去中心化组织

在 Dweb 系列中,我们涵盖了探索网页去中心化或分布式化后可能性的项目。这些项目与 Mozilla 无关,其中一些项目重写了我们对网页浏览器的思考方式。它们的共同点是:这些项目是开源的,并开放参与,它们与 Mozilla 的使命一致,即保持网络开放和对所有人可访问。

虽然我们涵盖的许多项目都基于我们所知的网络或与我们熟悉的浏览器一样运作,但 Aragon 项目拥有更广阔的愿景:为人们提供构建自己的自治组织的工具,并通过智能合约将社会规范编入其中。我希望你喜欢来自项目联合创始人 Luis Cuende 的这段 Aragon 简介。

– Dietrich Ayala

介绍 Aragon

我是 Luis。我联合创办了 Aragon,它允许创建去中心化组织。Aragon 的原则体现在 Aragon 宣言 中,其格式灵感来自 Mozilla 宣言!

这里是一个简要概述。

  • 我们正处于历史的关键时刻:科技要么 **压迫** 我们,要么 **解放** 我们。
  • 这种结果将取决于 **共同利益是否由社区管理**,而不仅仅是国家或企业集团。
  • 为了实现这一点,我们需要能够实现 **去中心化治理** 的技术。
  • 由于加密技术的出现,去中心化治理可以提供新的组织方式,**无需暴力或监视**,从而为个人提供更多 **自由** 并提高 **公平性**。

使用 Aragon,开发人员可以创建新的应用程序,例如投票机制,这些应用程序使用智能合约来利用去中心化治理,并允许同行控制资金、成员资格和代码库等资源。

Aragon 基于以太坊,以太坊是一个用于 智能合约 的区块链。智能合约是一种以可信赖且透明的方式执行的软件,无需依赖第三方服务器或任何单点故障。

Aragon 处于社会、应用程序平台和区块链的交汇点。

架构

Aragon 应用程序是为数不多的真正去中心化应用程序之一。由于 aragonOSAragon 包管理器 (APM),其智能合约和前端是可以升级的。您可以将 APM 视为一个完全去中心化和社区管理的 NPM。智能合约存在于以太坊区块链上,而 APM 负责存储其版本的日志。APM 还保留了存储在去中心化存储平台上的任意数据块的记录,例如 IPFS,在我们的例子中,我们使用它来存储应用程序的前端。

Aragon architecture diagram

Aragon 应用程序允许用户将新应用程序安装到他们的组织中,这些应用程序使用沙箱化的 iframe 嵌入。所有应用程序都使用 Aragon UI,因此用户甚至不知道他们正在与不同开发人员创建的应用程序进行交互。Aragon 拥有一个非常丰富的 权限系统,允许用户设置每个应用程序在组织中可以做什么。例如:如果一项投票获得 51% 的支持,则可以从资金中提取高达 1 美元的资金。

Aragon tech stack diagram

Hello World

要创建 Aragon 应用程序,您可以访问 Aragon 开发者门户网站。入门非常简单。

首先,如果您还没有安装,请 安装 IPFS

其次,运行以下命令

$ npm i -g @aragon/cli
$ aragon init foo.aragonpm.eth
$ cd foo
$ aragon run

这里我们将展示一个基本的计数器应用程序,该应用程序允许组织成员在发生民主投票时进行计数器加减,例如。

这将是以太坊中跟踪计数器的智能合约(在 Solidity 中)

contract Counter is AragonApp {
  /**
  * @notice Increment the counter by 1
  */
  function increment() auth(INCREMENT_ROLE) external {
    // ...
  }

  /**
  * @notice Decrement the counter by 1
  */
  function decrement() auth(DECREMENT_ROLE) external {
    // ...
  }
}

这段代码在一个 Web 工作线程 中运行,跟踪智能合约中的事件并在后台缓存状态

// app/script.js
import Aragon from '@aragon/client'

// Initialize the app
const app = new Aragon()

// Listen for events and reduce them to a state
const state$ = app.store((state, event) => {
  // Initial state
  if (state === null) state = 0

  // Build state
  switch (event.event) {
    case 'Decrement':
      state--
      break
    case 'Increment':
      state++
      break
  }

  return state
})

一些基本的 HTML(为了简单起见,没有使用 Aragon UI)

<!-- app/index.html !-->
<!doctype html>

<button id="decrement">-</button>
<div id="view">...</div>
<button id="increment">+</button>
<script src="app.js"></script>

以及更新 UI 的 JavaScript

// app/app.js
import Aragon, { providers } from '@aragon/client'

const app = new Aragon(
  new providers.WindowMessage(window.parent)
)
const view = document.getElementById('view')

app.state().subscribe(
  function(state) {
    view.innerHTML = `The counter is ${state || 0}`
  },
  function(err) {
    view.innerHTML = 'An error occurred, check the console'
    console.log(err)
  }
)

aragon run 负责在 APM 上更新您的应用程序并将您的本地 Web 应用程序上传到 IPFS,因此您无需担心!

了解更多信息

您可以访问 Aragon 网站开发者门户网站 了解更多有关 Aragon 的信息。如果您对去中心化治理感兴趣,还可以查看我们的 研究论坛

如果您想贡献,可以查看我们的 好的第一个问题

如果您有任何问题,请加入 Aragon 社区聊天

关于 Luis Cuende

Luis 是 Aragon One 的首席执行官,Aragon One 是 Aragon 项目的团队之一。Luis 在 15 岁时被评为欧洲最佳未成年程序员,并被列入 福布斯 30 位 30 岁以下麻省理工学院 TR35。他联合创办了区块链初创公司 Stampery,并且从 2011 年就开始关注加密货币。他的第一个开源项目是一个专注于用户体验的 Linux 发行版。

Luis Cuende 的更多文章…


一条评论

  1. John Martin

    Aragon 旨在通过使用区块链技术来取消组织结构创建和维护的中介。我们希望赋予世界各地的人们轻松安全地管理其组织的能力。我们为任何人提供工具,让他们成为企业家并经营自己的组织,以掌控自己的生活。

    2018 年 9 月 22 日 下午 12:10

本文的评论已关闭。