使用 Algorand 开发一个众筹应用
简介
众筹
众筹是指通过互联网向多人筹集项目资金的方式。众筹的概念出现于 1997 年,当时,一支英国乐队通过粉丝的网络捐款举办了一场重聚巡演。2011 年,美国《创业企业融资法案》为股权众筹提供了法律依据。诸如 Kickstarter 和 Fundable 之类的公司已经构建了一个价值数十亿美元的众筹市场,这使许多原本没有资金的项目得以启动。2019 年,KickStarter 帮助 187,010 个项目获得了来自 560 万名投资者的 52.3 亿美元的投资。
尽管互联网使众筹成为可能,但还存在许多亟待解决的问题。大多数众筹系统使用信用卡支付。信用卡手续费平均为 3.5%。对于一个 100 万美元的项目来说,信用卡手续费就高达 3.5 万美元,这将由项目创建者来承担。此外,世界上大约 80% 的成年人没有信用卡,因此无法参与众筹。众筹管理费也会消耗一部分融资费用。例如,KickStarter 收取 5% 的管理费。
许多众筹系统都是经过精心设计的,能够集中控制创建众筹项目的人选以及可接受的项目类型。
本文主要阐述如何应用 Algorand 区块链来构建开放、安全、可扩展、自动化且经济高效的下一代去中心化众筹服务。
Algorand
Algorand 是第 3 代区块链,使用高效的权益证明共识协议。它具有开放、安全、可扩展、节能和快速等特点,吞吐量高达每秒 1,000 次交易 (TPS)。交易在 5 秒内处理和完成,目前,名义交易费还不到 0.1 美分。Algorand 能够为资产、原子交换和智能合约提供第 1 层支持。将这些特点结合起来,就诞生了一个适合创建复杂和高效的去中心化金融系统的完美平台。
Algorand 还具有开放和无国界的特点。任何智能手机用户都可以加入 Algorand 网络中,目前用户人数已超过 600 万。
众筹要求
众筹系统要求如下:
项目多样性
众筹系统应面向任何类型的项目或事业开放。项目创建者包括农民、艺术家、学生、企业家、政治家、政府、企业、环保人士等。
全球性和无国界
众筹系统必须面向世界各地的项目创建者和投资者(即支持者)开放。
高效
众筹系统应具备高效的特点。加入系统的成本和收费应为名义费用。
安全
众筹系统必须具备安全性和公平性,能够保护筹集的资金。
工作流
遵循常规的解决方案做法。
定义众筹项目
定义众筹项目是第一步。由项目创建者指定项目的名称、描述、筹款目标和时间线。
时间线
众筹项目时间线应确定开始日期、结束日期和关闭日期。开始日期表示项目何时开始接受投资。结束日期表示不再接受追加投资,同时可分配已筹资金。如果筹款目标达成,资金将提供给项目创建者,否则个人投资者可以收回投资。下方的状态机描述了众筹状态。
众筹状态机图
托管账户
每个众筹项目将使用一个托管账户来持有为该项目筹集的投资。托管账户将累计存放从开始日期至结束日期筹集的投资。
完成筹款
在结束日期后,如果筹款目标达成,项目创建者可申领托管账户中筹集的资金。否则,投资者可以收回自己的投资。到了关闭日期,项目创建者可申领托管账户中剩余的任何资金。
请注意,资金分配方式可能产生变化。例如,即使未达到筹款目标,也要将筹集到的所有资金分配给项目创建者。
设计
众筹系统采用模块化设计,具体组件如下。
Ignite 众筹组件图
Ignite Web 应用为众筹应用提供用户界面。Ignite Web 服务实现应用逻辑,以支持众筹工作流。交易网关统筹安排交易签名。签名钱包为投资者提供安全的交易签名。Algorand 区块链支持资金的安全管理,包括创建资产、管理账户、处理智能合约和提交交易。
Ignite Web 应用
该 Web 应用提供了一个直观易用的界面。下方的用例图显示了参与者和受支持的用例。
众筹用例图
项目创建者是指创建众筹项目的人。项目创建者创建项目,完成众筹后,如果达到筹款目标,则可申领从投资者处筹集的资金。投资者评估正在寻求投资机会的可用项目,然后进行投资。如果项目未能达到筹款目标,投资者可以收回自己对该项目的投资(在关闭日期前)。在项目的生命周期中,项目创建者和投资者均可随时查看项目状态。
下方的屏幕截图显示了项目创建页面,项目创建者可以在这里定义一个新项目,并指定项目的名称、描述和筹款目标。该 Web 应用支持设置不同货币单位的筹款目标,包括 Algo、USDC 和 USDT。USDC 和 USDT 均为受美元支持的稳定币,可在 Algorand 区块链上使用。对于众筹系统而言,美元稳定币的稳定性十分重要,它能够避免与加密数字货币相关的波动性。最后是指定项目账户,即 Algorand 账户,由该账户发布创建项目的交易,然后在项目成功结束时申领资金。时间限制指定了众筹的持续时间,用于根据当前日期来计算结束日期。关闭日期按照 2 倍的持续时间计算。
项目创建
用户可以在项目页面上查看活动项目。
查看可用项目
选择某个项目即可对该项目进行投资。
投资项目
如果筹款项目在结束日期达到筹款目标,则项目创建者可以申领资金。申领资金时,筹集到的投资会从资金的托管账户转入项目创建者的账户,并可立即供项目使用。
项目创建者在结束日期后申领资金
Ignite Web 服务
Ignite Web 服务是一种基于 REST 的服务,旨在为项目筹款生命周期提供支持,包括创建项目、处理投资以及申领或收回资金。该 Web 服务借助 DropWizard 框架用 Java 实现。Algorand Java SDK 用于与 Algorand 区块链集成。
该 Web 服务支持 Web 应用工作流。它能够创建所需的交易并将其提交至交易网关。下方的类图显示了服务 API(蓝色)和域类(黄色)。Fund 类表示某个项目实例。Investment 类表示从投资者处筹集到的投资。
众筹服务和域模型
交易网关
交易网关负责将交易路由到钱包,以便进行签名。签名完毕后,交易网关将交易提交给区块链,并通知发送方和接收方。
交易网关将交易路由到投资者的签名钱包。投资者使用签名钱包来签署需要投资的交易。鉴于 Algorand 区块链具有高效和低成本的特性,交易费用可以忽略不计(低于 0.1 美分)。
签名钱包
签名钱包能够安全地管理用户账户和密钥,并支持签署交易。当收到需要签名的新交易时,签名钱包会通知用户。待用户审核并签署交易后,钱包会将已签署的交易返回至交易网关。
投资者用于签署投资交易的手机签名钱包
Algorand 区块链
Algorand 区块链支持定义资产 (ASA) 和表示可替代资产,包括 Algo、USDT 和 USDC。资产为筹款项目提供投资货币。
有状态 TEAL 是一种智能合约语言,可用于维护全局和本地应用的状态。有状态 TEAL 应用将状态作为账户信息的一部分进行管理。在众筹应用中,与该应用关联的账户维护全局状态,包括资金配置(目标、开始日期、结束日期、关闭日期和接收方账户)和总投资价值。与每个投资者账户相关的本地状态用于跟踪投资情况。
众筹有状态 TEAL 应用组件
关于本项目中所用的有状态 TEAL 合约的更多详情,请参阅本解决方案文章。
https://developer.algorand.org/solutions/example-crowdfunding-stateful-smart-contract-application/
工作流
下方的活动图显示了众筹工作流。
达成筹款目标的项目众筹工作流
步骤:
- 项目创建者使用 Web 应用来创建新的众筹项目。
- Web 应用调用 Web 服务来创建新的众筹项目。
- Web 服务创建新的托管账户,并将其关联至 Algorand 区块链中的有状态 TEAL 应用。
- 投资者使用 Web 应用进行投资。
- Web 应用调用 Web 服务来创建投资。
- Web 服务创建投资交易并将其发送至交易网关。
- 交易网关通知与该投资账户关联的签名钱包,表示有交易待签署。
- 投资者使用签名钱包查看并签署交易。
- 签名钱包向交易网关返回已签署的交易。
- 交易网关将交易提交至 Algorand 区块链。
- 有状态 TEAL 合约逻辑将投资数额从投资者账户转移到托管账户中。
- 最后,筹款成功结束后,项目创建者申请获得托管账户中累积的资金。有状态 TEAL 合约将资金从托管账户转入项目创建者账户。
总结
本文主要阐述了如何应用 Algorand 区块链来构建开放、安全、去中心化、可扩展、自动化且经济高效的下一代众筹服务。
Algorand 区块链在整个网络中分配信任;无需依赖中央权威机构即可妥善管理众筹托管账户。该系统具有开放性;任何拥有智能手机和 Algorand 区块链账户的人都可以创建或投资项目。该系统可扩展到 1000 TPS(Algorand 网络当前的吞吐量)。有状态 TEAL 应用(智能合约)实现了众筹项目的自动化管理,包括控制项目集资何时处于活动状态,以及何时申领或收回资金。该系统具有安全性;投资者通过手机签名钱包与交易网关相结合的形式,签署和实施出资交易。有状态 TEAL 应用跟踪托管账户的总额和各个账户的出资。自动化技术与高效的 Algorand 区块链相结合,最大限度地降低了交易费用和开支。只需支付名义上的管理费用,所筹集到的资金几乎可以全部投入到项目之中。
未来改进
本文描述了投资者以捐款形式为项目出资的用例。未来的投资领域可扩展到股权和贷款。
参考资料
Ignite Web 应用源代码
https://github.com/bricerisingalgorand/ignite
Ignite 应用服务源代码
https://github.com/algorand/app-service
众筹有状态智能合约应用示例
https://developer.algorand.org/solutions/example-crowdfunding-stateful-smart-contract-application/
最佳众筹网站
https://www.thebalancesmb.com/best-crowdfunding-sites-4580494
众筹的发展历程
https://www.fundable.com/crowdfunding101/history-of-crowdfunding