一个去信任的本地交易所交易系统

Amitabh Saxena

2019年5月29日

本地交易所交易系统(LETS)旨在发展当地经济,并且通常由在彼此附近的当地人使用。 在此链接中描述了一个管理LETS的委员会。 我们将此类系统称为管理或许可,因为它取决于受信任的委员会。 在这里,我们描述了一个去信任的LETS系统,即没有管理委员会的系统。

概要

LETS涉及多个同意使用某种形式的“本地货币”的党派,通常以1:1的比率与该国的主要货币挂钩。假设我们的LETS位于欧洲国家,货币为欧元,交换以“当地欧元”进行,被认为相当于国家欧元。

LETS中的每个用户都有一个帐户,其中包含该用户的LETS余额(以本地欧元为单位)。在加入时,每个用户的余额为零。余额存储在(可能是去中心化的)分类帐中。 LETS的一个有趣特征是零余额的用户也可以“提款”,但仅用于支付另一个LETS用户。在任何时候,所有用户的LETS余额总和为零。

例如,零余额的Alice希望从Bob那里以2欧元购买一升牛奶,Bob也是零余额的LETS成员。她将2欧元从她的账户转到Bob's,她的余额为-2,Bob为+2。然后,Bob可以将他的部分或全部余额转移给另一个LETS用户,以换取商品或服务。

去信任的LETS

由于我们希望获得去信任的LETS,因此我们不能依赖任何受信任的群体来接纳用户。我们只假设又一个有信任的预言机(oracle)由一些全球账号和一个包含这个账号的一个代币的单例币箱标识。此币箱还包含在任何给定时间段内尔格币与欧元的比率。通过使用此币箱并使用新费率创建另一个单例币箱来更新费率。

在任何情况下,我们的LETS由包含一些LETS成员资格代币的全局LETS币箱来定义。此币箱受以下脚本保护。代币账号唯一地定义了所使用的LETS的属性,例如位置,货币单位,费率预言机(oracle)账号等。一个或多个用户可以花费该币箱并创建他们各自的LETS币箱作为交易的输出。该币箱最初以例如10000 LETS会员代币开始。

一个LETS币箱表示一个LETS成员,必须用于LETS交易。 LETS交易发生在两个LETS成员之间,一个是发送者而另一个是接收者,这样发送者将一些正数量的LETS货币(本地欧元)转移给接收者。这样的交易消耗成员的币箱并将其重新创建为具有更新余额的输出。

基本变体

为了防止垃圾信息和分布式拒绝服务攻击,我们要求至少将一些最小数量的尔格币(minErgsToJoin)锁定在新创建的成员的币箱中。 尔格币将被锁定,直到至少minWithdrawTime数量的区块被挖掘为止。 允许一个币箱的LETS余额为负值,直至锁定的尔格币可以覆盖的金额(使用交易时的汇率)。

// 一个币箱存储会员的代币
val tokenBox = OUTPUTS(0) // first output contains remaining LETS tokens
def isLets(b:Box) = {
   // 一个LETS 币箱必须在代币中有正好一个会员资格代币(0)
   b.tokens(0)._1 == letsTokenID && b.tokens(0)._2 == 1 &&
   blake2b256(b.propositionBytes) == memberBoxScriptHash &&
   SELF.R4[Long].get == 0 && // 从0 LETS结余中开始一个币箱
   b.value >= minErgsToJoin && // 币箱必须包含一些最小数量的尔格币
   b.R6[Long].get <= HEIGHT // 将创建高度存储在R6中
}

// 在tx中创建了多少lets币箱
val numLetsBoxes = OUTPUTS.filter({(b:Box) => isLets(b)}).size

// 在交易中,为币箱保留了以下内容 ...
tokenBox.tokens(0)._1 == SELF.tokens(0)._1 &&                // 代币账号
tokenBox.tokens(0)._2 == SELF.tokens(0)._2 - numLetsBoxes && //  数量
tokenBox.propositionBytes == SELF.propositionBytes           //  脚本

LETS成员的币框受以下脚本的保护,其哈希memberBoxScriptHash(成员币箱脚本哈希)被以上使用。

val validRateOracle = CONTEXT.dataInputs(0).tokens(0)._1 == rateTokenID
val rate = CONTEXT.dataInputs(0).R4[Int].get
val inBalance = SELF.R4[Long].get    // 当前输入下的LETS结余
val pubKey = SELF.R5[SigmaProp].get  // 当前输入的拥有者
val createdAt = SELF.R6[Long].get    // 当前输入开采的高度

val index = getVar[Int](0).get       // 相关输出的指数
val out = OUTPUTS(index)
val outBalance = out.R4[Long].get    // 输出的LETS结余

// LETS币箱与当前币箱具有相同的脚本
val isMemberBox = {(b:Box) => b.propositionBytes == SELF.propositionBytes}
val letsInputs = INPUTS.filter(isMemberBox)    // 所有LETS输入币箱
val letsOutputs = OUTPUTS.filter(isMemberBox)  // 所有LETS输出币箱

// 如果LETS余额增加,则当前输入属于接收器
// 接收器的输入币箱中可能有一些尔格币,我们需要确保
// 接收器的输出币箱也包含与输入相同数量的尔格币
val receiver = outBalance > inBalance && out.value == SELF.value

val getBalance = {(b:Box) => b.R4[Long].get} // 回到币箱的LETS结余

val letsBalIn = letsInputs.map(getBalance).fold(0L, {(l:Long, r:Long) => l + r})
val letsBalOut = letsOutputs.map(getBalance).fold(0L, {(l:Long, r:Long) => l + r})

// 发送人的币箱可以包含较少量的尔格币(发送人可以撤回提供的尔格币
// 发送者的任何负LETS余额都有足够的尔格币支持)
val correctErgs = out.value >= -outBalance * rate && (
  out.value >= SELF.value || SELF.R6[Long].get + minWithdrawTime > HEIGHT
)

// 对于接受者来说,我们并不接触尔格币的结余
// 因为接受者没有积极参与交易

inBalance != outBalance && // 交易应该发生;结余必须变化
SELF.tokens(0)._1 == letsTokenID && // 当前输入有正确的代币
out.tokens(0)._1 == letsTokenID && // 对应地,输出也有正确的代币
validRateOracle &&          // 预言机(oracle)提供费率具备正确的“费率代币”
letsBalIn == letsBalOut &&  // 总共的LETS结余被保存在交易中
letsInputs.size == 2 && letsOutputs.size == 2 &&  // 只有两个LETS输入,输出
out.propositionBytes == SELF.propositionBytes &&  // 输出是一个LETS币箱 ...
out.R5[SigmaProp].get == pubKey &&                // ... 用正确的公钥
out.R6[Long].get == SELF.R6[Long].get &&          // ... 和创建高度
(receiver ||              // ...要么当前输入属于接受者
  (pubKey && correctErgs) // ... 要么输出有正确的尔格币,同时tx有签名
)

使用上述脚本支付币箱的交易需要:

  • 保留了输入和输出的LETS结余之和
  • 有两个LETS输入和两个LETS输出
  • 公钥(存储在R5中)保存在相应的输出中
  • 创建高度(存储在R6中)保留在相应的输出中

我们说如果输出的LETS结余高于其输入的LETS结余,则某些公钥是接收器。

最后一个条件要求输入(和输出)币箱属于接收器(以便保留尔格币的数量),或者如果LETS余额为负,则输出由所需数量的尔格币支持。此外,它要求发送者的尔格币结余不能减少,直到在尔格币被锁定之后已经挖掘了minWithdrawTime的区块数量。

与托管LETS相比,上述系统有以下不同之处:

  • 没有会员记录:与托管LETS不同,我们不在此处存储任何会员信息。
  • 多个币箱:一个人可以创建多个会员币箱,这是允许的。我们只要求每个币箱都锁定最小数量的尔格币。

LETS-1:零和,有抵押

以上是我们称之为LETS-1的基本变体。 它具有以下功能:

  • 有时间限制的加入费:为了防止垃圾信息攻击,会员必须在加入时支付一定的最低费用。 此费用可退还,但仅限于预定数量的区块后。
  • 零和:所有成员币箱的LETS余额总和为零。 只要在一定限度内,会员币箱就可以有负余额。
  • 抵押品:对于发送人的输入,尔格币用作抵押品以支付当前汇率的负LETS余额。

以下是LETS-1的一些变体。

LETS-2:零和,无抵押

这是LETS-1的略微变化如下:

  • 不可退还的加入费:与LETS-1类似,需要加入费用以防止垃圾信息攻击。但是,与LETS-1不同,此费用不可退还,必须发送给某个预定义的管理委员会。
  • 零和:与LETS-1一样。

LETS-3:正和,有抵押

以上两种变体要求总LETS余额始终为零。在这里,我们考虑这个总和的正值。特别是,此变体具有以下属性:

  • 时间锁定加入费:与LETS-1相同。
  • 正和:每个成员的LETS余额必须始终为非负数。这确保了所有成员币箱的LETS余额总和为正。初始LETS余额根据当前汇率的加入费设置为正值,上限为某个最大值。
  • 抵押品:发送方的尔格币余额的任何减少必须伴随当前汇率的相应LETS余额的减少。

我们还可以通过添加等量的尔格币来允许在交易期间补足LETS余额。

LETS-4:正和,无抵押

这类似于LETS-3,但有一些小的变化:

  • 不可退还的加入费:与LETS-2相同
  • 正和:与LETS-3一样

下表总结了这些变体:

零和正和
有抵押LETS-1LETS-3
无抵押LETS-2LETS-4

Share post

Ergo基础设施DAO:去中心化Ergo生态系统的支柱

Ergo基础设施DAO:去中心化Ergo生态系统的支柱

Ergo的使命一直根植于去中心化,不仅在共识层面,而是在整个技术栈中。随着Ergo基础设施DAO (InfraDAO)的推出,这一愿景正在扩展到每天为生态系统提供动力的服务和基础设施。 InfraDAO现在在Paideia上正式上线,经过成功的治理投票。最初.

Ergo Platform

2025年8月13日

Mew Finance:一个为Ergo生态系统提供的有趣DeFi工具包

Mew Finance:一个为Ergo生态系统提供的有趣DeFi工具包

Mew Finance是一个基于Ergo区块链的去中心化应用套件。该项目于2024年10月启动,将DeFi、数字资产和跨链功能整合到一个统一的平台中。长期社区开发者HQΣr和Aco Šmrkas领导该项目。设计上偏向模块化、易用性和深度生态系统集成。 本文是.

Ergo Platform

2025年8月12日

Lithos:通过链上矿池实现去中心化挖矿

Lithos:通过链上矿池实现去中心化挖矿

Lithos是一个新协议,旨在通过将矿池转移到链上来彻底改革矿池的运作方式,使矿工完全控制,并消除对中心化矿池运营商的需求。与之前大多数去中心化挖矿的尝试不同,Lithos旨在高效、可扩展和安全。 什么是Lithos? Lithos是一个去中心化的矿池协议.

Ergo Platform

2025年7月24日

Sigma 6.0:更智能、更灵活的Ergo

Sigma 6.0:更智能、更灵活的Ergo

Sigma 6.

Ergo Platform

2025年7月23日

塑造Rosen的未来:关于五项关键财政提案的社区呼吁

塑造Rosen的未来:关于五项关键财政提案的社区呼吁

Rosen的联合创始人Armeanio已向Rosen财政提交了五项新提案。这些提案概述了Rosen Bridge的增长、实用性和可扩展性的战略愿景,这是Ergo互操作性基础设施的核心组成部分。 这是Ergo社区审查和讨论这一重要跨链服务未来方向的关键时刻。以.

Ergo Platform

2025年7月9日

Ergo的扩展UTXO与人工经济智能的崛起

Ergo的扩展UTXO与人工经济智能的崛起

自主经济代理的实用愿景 Ergo区块链上的自主经济代理在真实的数字经济中执行有用的工作。它们通过创建内容和提供数据分析、模式识别等服务来产生收入。它们利用收入支付运营费用,如托管费和服务器成本,并使用现代工具,如SSH和加密友好的托管服务提供商。当有额外资金.

Ergo Platform

2025年5月12日

ErgoHACK X:在Ergo区块链上的人工智能

ErgoHACK X:在Ergo区块链上的人工智能

庆祝去中心化创新的十年 加入第十届ErgoHACK,站在Ergo区块链AI革命的最前沿!释放你的创造力,与其他创新者合作,共同构建去中心化AI的未来。 关于ErgoHack ErgoHACK,旗舰社区黑客马拉松,庆祝其十周年!这一里程碑事件是Ergo生态系统.

Ergo Platform

2025年4月10日

ERG正式上线Kucoin(库币)交易所

ERG正式上线Kucoin(库币)交易所

据Kucoin官方通告,Ergo平台原生代币ERG于8月3日正式上线Kucoin(库币)交易所。目前支持的交易对是ERG/USDT。现已开放充值;2021年8月5日UTC时间上午10:00开放交易;2021年8月6日UTC时间上午10:00开放提币。 .

Ergo Foundation

2021年8月3日

Ergo两周年纪念——早期采用者应了解的核心知识

Ergo两周年纪念——早期采用者应了解的核心知识

Normal 0 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.

root7Z

2021年7月5日

关于Ergo启用官方QQ频道的公告

关于Ergo启用官方QQ频道的公告

由于Ergo官方微信号暂无法使用,Ergo官方现新增Ergo官方QQ频道:796039547。全球中文用户可通过扫描下面的二维码加入Ergo中文社区,及时了解Ergo最新官方动态. .

Eva Qing

2021年6月30日

Ergo首届黑客松大赛ERGOHACK圆满结束

Ergo首届黑客松大赛ERGOHACK圆满结束

Ergo首届黑客松大赛已经圆满结束,它正如计划那样:规模小而富有实验性,但依然收到了一些很棒的作品提交。Kushti以他的开场视频拉开了活动的序幕,然后我们总共有六个团队,其中来自anon_real(AuctionHouse、SigmaUSD UI等项目的创建.

Curia Regis Crypto

2021年6月29日

关于举办首届Ergo中国社区驱动践行活动的公告

关于举办首届Ergo中国社区驱动践行活动的公告

为了进一步提高Ergo公链平台在中国的知名度,让更多用户深入了解Ergo,同时为了践行Ergo社区驱动的理念,Ergo中国社区现特别举办“首届Ergo中国社区驱动践行活动”。活动参与者积极向新用户布道Ergo并将其引至Ergo官方指定社群,将有机会赢取ERG奖.

Eva Qing

2021年6月4日

比特币的前进之路是努力追赶Ergo ——Ergo率先实现扩展UTXO智能合约

比特币的前进之路是努力追赶Ergo ——Ergo率先实现扩展UTXO智能合约

比特币 比特币是一头野兽。是的,其底层软件需要认真升级。它真的太慢了。但是,您也必须承认它的优势,网络效应是非常强大的------比特币是加密货币之王。在全球范围内,比特币正成为一个常见、被理解和被采用的术语。大型信托、投资巨头和对冲基金经理,都被比特币的主.

Curia Regis Crypto

2021年5月23日

关于Ergo基金会任命谭声情先生担任中国区大使的公告

关于Ergo基金会任命谭声情先生担任中国区大使的公告

经Ergo基金会批准,现任命谭声情先生(英文名:Tango)担任Ergo中国区大使。 为了提升Ergo在中国的知名度与影响力,Ergo基金会现授权谭声情先生以Ergo中国区大使身份进行Ergo在中国的品牌宣传、商务洽谈、社区活动、主题推广等事宜。 此任命自.

Ergo Team

2021年5月16日

硬分叉事后说明

硬分叉事后说明

英文链接: 应@kushti的请求,我现在给大家说明一下今天在硬分叉升级期间发生的事情。有一些BUG导致矿工无法出块,现已修补好这些BUG,矿工可以出块。 version2ActivationDifficultyHex中出现往返编码失败(Round-T.

Eva Qing

2021年2月3日

硬分叉升级后Ergo挖矿须知

硬分叉升级后Ergo挖矿须知

Ergo将在区块#417,792上进行硬分叉协议升级。此次升级会引入重大更改,包括将关闭不可外包功能(Non-Outsourceability)。经过此次硬分叉之后,新的PoW(被称为Autolykos v2.

Eva Qing

2021年2月1日

如何设置和配置Ergo全节点

如何设置和配置Ergo全节点

如何设置和配置Ergo全节点 本教程说明了如何安装和运行Ergo全节点,不涵盖挖矿。  Windows用户还可以观看视频教程。 如何在Windows上设置和配置Ergo全节点 视频链接: 节点安全 这里是节点使用的一些重要方面,您的钱包及代币是否安全.

Eva Qing

2021年1月21日

既想享受乐趣,又想赚取利润? ——那就赶紧来挖ERG

既想享受乐趣,又想赚取利润? ——那就赶紧来挖ERG

Ergo GPU挖矿 本文将帮助您开始使用GPU挖矿Ergo原生代币ERG。 Ergo挖矿基于Autolykos,即一种工作量证明(PoW)算法,被设计为阻碍ASIC矿机和矿池。矿工须执行存储困难的计算(需要至少4 GB的内存,但是当前最有效的实现使用的是.

Eva Qing

2021年1月21日

适用于AMD GPU的Autolykos v2(Ergo)的OpenCL挖矿软件

适用于AMD GPU的Autolykos v2(Ergo)的OpenCL挖矿软件

适用于ergoplatform.

Eva Qing

2021年1月19日

适用于Nvidia GPU的Autolykos v2(Ergo)用Cuda挖矿软件

适用于Nvidia GPU的Autolykos v2(Ergo)用Cuda挖矿软件

用于ergoplatform.

Eva Qing

2021年1月19日

尔格基金会为主要去中心化应用(dApp)基础设施提供资助

尔格基金会为主要去中心化应用(dApp)基础设施提供资助

尔格基金会将考虑支持重大生态系统开发项目提供资助的建议。 尔格是一个面向社区的项目,该生态系统的方方面面都有许多贡献者。尔格基金会会拿出一部分资金资助此项工作,这对于构建用户所需的日常产品与服务以及更多样化的金融去中心化应用至关重要。该基金会正在积极寻求.

Guy Brandon

2020年11月17日