CN109003187A - 一种区块链智能合约的更新升级方法 - Google Patents
一种区块链智能合约的更新升级方法 Download PDFInfo
- Publication number
- CN109003187A CN109003187A CN201810825652.7A CN201810825652A CN109003187A CN 109003187 A CN109003187 A CN 109003187A CN 201810825652 A CN201810825652 A CN 201810825652A CN 109003187 A CN109003187 A CN 109003187A
- Authority
- CN
- China
- Prior art keywords
- contract
- function
- ballot
- user
- update
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Abstract
本发明涉及通信技术领域,特别涉及一种区块链智能合约的更新升级方法,本发明在每一个智能合约中加入一个投票函数,只有当一定数量的用户投票赞成更新合约时,合约提供方才能更新升级合约;本发明将智能合约更新升级的权利赋予广大的用户手中,从智能合约更新升级的角度做到“去中心化”,实现了将智能合约更新升级的权利赋予到用户手中,更是通过投票的方式,协调了用户和合约提供方的关系,用户使用的服务也得到了统一,部分更新智能合约的做法,使得合约提供方不用移动旧合约中的数据,简化了智能合约更新的周期,也保证了用户数据的安全,具有很强的创造性。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种区块链智能合约的更新升级方法。
背景技术
区块链上智能合约本质上是一段程序化代码,与其他程序一样,他具有创建、初始化、状态存储、函数调用、结束/销毁等生命周期。与普通程序不同的是,它是运行在区块链上,由全体参与者共同保障其代码和运行结果得到所有人认可的。即使该运行结果对某个参与方不利,该参与方拒绝承认该结果,由于区块链的共识机制保障,其他的大部分参与者都认可该结果,则该结果仍然成立,不受少数参与者的抵赖影响。同时,发布于区块链上的智能合约无法销毁,要想实现对智能合约的更新升级,一般做法都是重新发布一个智能合约。
区块链技术的几大特点中,有一个特点就是区块链数据的不可篡改性。但是智能合约(智能合约是区块链中运行的应用程序,包含可以实现多种功能的函数)部署后,总会不可避免的出现一个或多个漏洞,或者合约提供方(合约提供方指的是编写合约的人员或者公司)想更新升级智能合约,以提高服务性能或者达到某些利己不利人的目的。当前的常规做法是,合约提供方随时可以更新智能合约,无需经过用户的同意。这其中的问题在于,不应该允许合约提供方随意更新升级智能合约,否则就是破坏了区块链“去中心化”的特性(“去中心化”指的是去除中心化的独裁公司或者机构)。那么能否提出一种方法,在不破坏区块链公开、安全、去中心化、不可篡改的特性下,实现智能合约的升级。
现有技术缺点:
1.一旦发布合约到区块链上,就不能随意在原有合约的基础上进行大量修改。
2.合约升级、服务升级是一个必然的需求,而合约提供方还是不能随意发布一个新合约取代旧合约,否则就是强制更新,是一种“中心化”的行为。
3.合约提供方与用户之间处于完全对立的立场。虽然用户可以选择使用旧合约,但是这种新、旧合约之间地不统一,势必会带来众多的麻烦。
4.新合约取代了旧合约,原有旧合约中存储的数据如何转移到新合约中来?还是直接作废,单方面“毁约”。
发明内容
有鉴于此,本发明实施例的目的在于提供一种区块链智能合约的更新升级方法,本发明使用投票的方式,将智能合约更新升级的权利赋予广大的用户手中,从智能合约更新升级的角度做到“去中心化”,实现了将智能合约更新升级的权利赋予到用户手中,更是通过投票的方式,协调了用户和合约提供方的关系,用户使用的服务也得到了统一,简化了智能合约更新的周期,保证了用户数据的安全。
本发明实施例解决上述技术问题所采用的技术方案如下:
根据本发明实施例的一个方面,提供一种区块链智能合约的更新升级方法:
所述方法包括投票机制和自动更新,所述方法的合约提供方提供合约服务于用户群,当合约需要更新时,合约提供方将发起投票,并允许用户选择是否废除旧合约或者合约函数,所述用户群基于区块链技术的应用,占据一部分主动权的用户们拥有投票权,决定是否废除旧合约或者合约函数,并在每个合约的中嵌入一个投票函数,若用户投票通过,投票函数将自动废除旧合约中的函数,若用户最终投票通过,则合约提供方将发布一个新合约,所述投票遵循投票机制即投票仲裁。
优选的,所述投票机制合约中的每个函数以及重要的参数设置一个唯一id,当需要更新其中某一个或一些函数或者参数时,就对目标函数或者参数发起更新升级的投票,投票的发起者是合约提供方.合约提供方可以通过现实中的推送消息的方法通知合约用户投票。
优选的,所述投票机制中合约用户投票可以投赞成票、反对票,不投票即视为弃权。规定时间内,当赞成票超过总用户人数的50%时,视为投票通过,自动触发合约更新函数。当反对票超过50%时,视为投票失败,不予更新。
优选的,所述投票机制中当超过规定时间,赞成或者反对的人数都没有超过50%时,只有赞成人数大于反对人数的两倍,则视为投票通过,自动触发合约更新函数;否则,投票失败,不予更新。
优选的,所述方法的自动更新包括投票发起函数、投票函数和更新函数;
所述投票发起函数的投票发起函数设置由合约提供方触发,合约提供方以此设置用户群应该投票更新的函数;
所述投票函数的调用权限设置为该应用的用户群,用户群允许投票,非注册用户不允许投票,若投票票数达到通过的要求,则投票函数自动触发更新函数。
所述更新函数的权限设置为私有,在投票通过的情况下,由投票函数自动触发,不受外界影响,若规定时间内投票未通过,则自动结束投票,不触发更新函数。
优选的,所述更新函数运行更新函数的权利掌握在广大的用户群手中,更新函数对所投的函数进行更新,并将该函数失能,此后任何人都不能使用该失能过的函数达到某种功能。
优选的,所述方法还设置激励机制用于鼓励用户参与投票,让投票函数更早的得到结果,奖励的形式可以是应用中的积分,或者直接给予用户区块链平台上的虚拟货币。
优选的,所述方法的新旧合约协同工作使用区块链中的接口的方法实现,旧合约中的数据转移到新合约中可使用接口的方法,调用旧合约中的数据至新合约中。
优选的,所述方法的流程为:
a.若正在运行的合约出现问题,需要更新升级,则合约提供方主动发起更新投票。
b.使用某种激励机制,激励用户群开始广泛的投票
c.若最终的投票结果达到某一个阈值,将自动失能旧合约函数。
d.合约提供方将重新发布一个新合约,代替旧合约中被废除的函数。
e.新、旧合约协同工作。
本发明的有益效果为:
本发明使用投票的方式,将智能合约更新升级的权利赋予广大的用户手中,从智能合约更新升级的角度做到“去中心化”,实现了将智能合约更新升级的权利赋予到用户手中,更是通过投票的方式,协调了用户和合约提供方的关系,用户使用的服务也得到了统一,部分更新智能合约的做法,使得合约提供方不用移动旧合约中的数据,简化了智能合约更新的周期,也保证了用户数据的安全。
附图说明
图1是本发明的整体结构图;
图2是本发明的方法流程图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅以解释本发明,并不用于限定本发明。
实施例一
如图1所示的整体结构图:
合约提供方:提供合约服务于用户,当合约需要更新时,合约提供方将发起投票,允许用户选择是否废除旧合约或者合约函数。若用户最终投票通过,则合约提供方将发布一个新合约。
用户群:基于区块链技术的应用,由于其去中心化的特点,使得用户可以占据一部分主动权,用户们拥有投票权,决定是否废除旧合约或者合约函数。
投票仲裁:投票的机制将使得用户占据一部分主动权,投票的原理如下,在每个合约的中嵌入一个投票函数,若用户投票通过,投票函数将自动废除旧合约中的函数。
对于投票机制,合约中的每个函数以及重要的参数设置一个唯一id,当需要更新其中某一个或一些函数或者参数时,就对目标函数或者参数发起更新升级的投票,投票的发起者一般是合约提供方.合约提供方可以通过现实中的推送消息的方法,例如:短信等.通知合约用户投票;
合约用户投票可以投赞成票、反对票,不投票即视为弃权。规定时间内,当赞成票超过总用户人数的50%时,视为投票通过,自动触发合约更新函数。当反对票超过50%时,视为投票失败,不予更新。
当超过规定时间,赞成或者反对的人数都没有超过50%时,只有赞成人数大于反对人数的两倍,则视为投票通过,自动触发合约更新函数;否则,投票失败,不予更新。
投票发起函数:投票发起函数设置为只能是由合约提供方来触发,合约提供方以此设置用户群应该投票更新哪一个函数。
投票函数:投票函数的调用权限设置为该应用的用户群可以投票,非注册用户不允许投票。若投票票数达到通过的要求,则投票函数自动触发更新函数。
更新函数:更新函数的权限设置为私有的,也就是说,只能是投票通过的情况下,由投票函数自动触发,不受外界任何人操作。也就是说,运行更新函数的权利掌握在广大的用户群手中。更新函数对所投的函数进行更新,也就是将该函数失能。此后任何人都不能使用该失能过的函数达到某种功能。若规定时间内投票未通过,则自动结束投票,不触发更新函数。
激励机制:激励机制是为了鼓励用户参与投票,因此,可以激励机制的设计应该交给合约提供方来设计,最好是越早参与投票的人,得到的奖励越多。让投票函数更早的得到结果。奖励的形式可以是应用(合约实现的是一系列的功能,一个或者多个智能合约可以共同实现功能,这些智能合约也称之为区块链上的应用)中的积分。或者直接给予用户区块链平台上的虚拟货币,如:比特币,以太坊等。
新旧合约协同工作:由于是对智能合约的部分更新,因此需要新旧合约协同工作,这一点可以使用区块链中的接口(Interface)的方法实现,并且,旧合约中的数据不用完全转移到新合约中,只需要使用接口的方法,调用旧合约中的数据即可。
结合现有技术,原有的合约虽然无法更改,其实是函数不能抹除,但是可以使用一种方法,使该函数失效,从另一个角度实现对智能合约的更新,为了不让合约提供方随意更新升级智能合约,把更新合约的权利交到用户手中,为达到这个目的;
本发明的实现方法是在每一个智能合约中加入一个投票函数,只有当一定数量的用户投票赞成更新合约时,合约提供方才能更新升级合约,考虑到用户有可能不愿意参与投票,因此本专利设计一个激励机制,鼓励用户投票,越早投票的用户,将得到更多的奖励。
为了更新之后,避免迁移数据,本专利使用的方式是部分更新的方法,允许只更新旧合约中的某个函数或者多个函数。此后,新合约与旧合约协同工作,共同完成一个完整的功能。
实施例二
如图2所示的方法流程图:
a.若正在运行的合约出现问题,需要更新升级,则合约提供方应该主动发起更新投票。
b.使用某种激励机制,激励用户群开始广泛的投票
c.若最终的投票结果达到某一个阈值,将自动失能旧合约函数。
d.合约提供方将重新发布一个新合约,代替旧合约中被废除的函数。
e.新、旧合约协同工作。
结合现有技术,本发明具有以下特点:
S1投票函数的设计:
精心设计的投票函数可以满足以下特点:
1)投票发起自主,使合约提供便捷地发起关于智能合约更新的请求;
2)投票奖励分段,通过设置不同奖励激发越多用户越早进行投票;
3)投票终止动态,只要赞成人数达到设置比例,即认可为投票通过,从而终止此投票过程。
S2合约更新方式灵活:包含部分更新与全部更新两种,根据投票结果灵活选择。尤其地,部分更新的优点是可以不用转移旧合约数据。新合约将只包含一个更新函数,完整的合约功能需要新、旧合约一起实现,避免了数据迁移的麻烦。
S3新旧合约协同工作:由于是对智能合约的部分更新,因此需要新旧合约协同工作,这一点可以使用区块链中的接口(Interface)的方法实现,并且,旧合约中的数据不用完全转移到新合约中,只需要使用接口的方法,调用旧合约中的数据即可。
综上,本发明使用投票的方式,将智能合约更新升级的权利赋予广大的用户手中,从智能合约更新升级的角度做到“去中心化”,实现了将智能合约更新升级的权利赋予到用户手中,更是通过投票的方式,协调了用户和合约提供方的关系,用户使用的服务也得到了统一,部分更新智能合约的做法,使得合约提供方不用移动旧合约中的数据,简化了智能合约更新的周期,也保证了用户数据的安全。
以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。
Claims (9)
1.一种区块链智能合约的更新升级方法,其特征在于:所述方法包括投票机制和自动更新,所述方法的合约提供方提供合约服务于用户群,当合约需要更新时,合约提供方将发起投票,并允许用户选择是否废除旧合约或者合约函数,所述用户群基于区块链技术的应用,占据一部分主动权的用户们拥有投票权,决定是否废除旧合约或者合约函数,并在每个合约的中嵌入一个投票函数,若用户投票通过,投票函数将自动废除旧合约中的函数,若用户最终投票通过,则合约提供方将发布一个新合约,所述投票遵循投票机制即投票仲裁。
2.根据权利要求1所述的区块链智能合约的更新升级方法,其特征在于:所述投票机制合约中的每个函数以及重要的参数设置一个唯一id,当需要更新其中某一个或一些函数或者参数时,就对目标函数或者参数发起更新升级的投票,投票的发起者是合约提供方;合约提供方可以通过现实中的推送消息的方法通知合约用户投票。
3.根据权利要求2所述的区块链智能合约的更新升级方法,其特征在于:所述投票机制中合约用户投票可以投赞成票、反对票,不投票即视为弃权;规定时间内,当赞成票超过总用户人数的50%时,视为投票通过,自动触发合约更新函数。当反对票超过50%时,视为投票失败,不予更新。
4.根据权利要求3所述的区块链智能合约的更新升级方法,其特征在于:所述投票机制中当超过规定时间,赞成或者反对的人数都没有超过50%时,只有赞成人数大于反对人数的两倍,则视为投票通过,自动触发合约更新函数;否则,投票失败,不予更新。
5.根据权利要求1所述的区块链智能合约的更新升级方法,其特征在于:所述方法的自动更新包括投票发起函数、投票函数和更新函数;
所述投票发起函数的投票发起函数设置由合约提供方触发,合约提供方以此设置用户群应该投票更新的函数;
所述投票函数的调用权限设置为该应用的用户群,用户群允许投票,非注册用户不允许投票,若投票票数达到通过的要求,则投票函数自动触发更新函数。
所述更新函数的权限设置为私有,在投票通过的情况下,由投票函数自动触发,不受外界影响,若规定时间内投票未通过,则自动结束投票,不触发更新函数。
6.根据权利要求5所述的区块链智能合约的更新升级方法,其特征在于:所述更新函数运行更新函数的权利掌握在广大的用户群手中,更新函数对所投的函数进行更新,并将该函数失能,此后任何人都不能使用该失能过的函数达到某种功能。
7.根据权利要求1所述的区块链智能合约的更新升级方法,其特征在于:所述方法还设置激励机制用于鼓励用户参与投票,让投票函数更早的得到结果,奖励的形式可以是应用中的积分,或者直接给予用户区块链平台上的虚拟货币。
8.根据权利要求1所述的区块链智能合约的更新升级方法,其特征在于:所述方法的新旧合约协同工作使用区块链中的接口的方法实现,旧合约中的数据转移到新合约中可使用接口的方法,调用旧合约中的数据至新合约中。
9.根据权利要求1所述的区块链智能合约的更新升级方法,其特征在于:所述方法的流程为:
a.若正在运行的合约出现问题,需要更新升级,则合约提供方主动发起更新投票。
b.使用某种激励机制,激励用户群开始广泛的投票
c.若最终的投票结果达到某一个阈值,将自动失能旧合约函数。
d.合约提供方将重新发布一个新合约,代替旧合约中被废除的函数。
e.新、旧合约协同工作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810825652.7A CN109003187A (zh) | 2018-07-25 | 2018-07-25 | 一种区块链智能合约的更新升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810825652.7A CN109003187A (zh) | 2018-07-25 | 2018-07-25 | 一种区块链智能合约的更新升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109003187A true CN109003187A (zh) | 2018-12-14 |
Family
ID=64597102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810825652.7A Pending CN109003187A (zh) | 2018-07-25 | 2018-07-25 | 一种区块链智能合约的更新升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109003187A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109451061A (zh) * | 2018-12-20 | 2019-03-08 | 全链通有限公司 | 区块链的合约调整处理方法和系统 |
CN110168582A (zh) * | 2018-11-30 | 2019-08-23 | 阿里巴巴集团控股有限公司 | 使用去中心化决策更新区块链智能合约 |
CN110413304A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 基于区块链网络的智能合约热升级方法及装置 |
CN111475777A (zh) * | 2020-03-09 | 2020-07-31 | 上海能链众合科技有限公司 | 一种区块链智能合约的升级方法 |
CN112085604A (zh) * | 2020-09-10 | 2020-12-15 | 北京金山云网络技术有限公司 | 一种升级智能合约的方法及装置 |
CN115996130A (zh) * | 2023-03-23 | 2023-04-21 | 安徽中科晶格技术有限公司 | 基于预置合约的dao治理方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106919419A (zh) * | 2017-02-03 | 2017-07-04 | 中钞信用卡产业发展有限公司北京智能卡技术研究院 | 区块链上的智能合约程序的更新方法及装置 |
US20180137465A1 (en) * | 2016-11-11 | 2018-05-17 | International Business Machines Corporation | Smart contract admission check and fault tolerance in a blockchain |
CN108196872A (zh) * | 2017-12-27 | 2018-06-22 | 邵美 | 一种区块链系统中智能合约的升级方法 |
-
2018
- 2018-07-25 CN CN201810825652.7A patent/CN109003187A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180137465A1 (en) * | 2016-11-11 | 2018-05-17 | International Business Machines Corporation | Smart contract admission check and fault tolerance in a blockchain |
CN106919419A (zh) * | 2017-02-03 | 2017-07-04 | 中钞信用卡产业发展有限公司北京智能卡技术研究院 | 区块链上的智能合约程序的更新方法及装置 |
CN108196872A (zh) * | 2017-12-27 | 2018-06-22 | 邵美 | 一种区块链系统中智能合约的升级方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110168582A (zh) * | 2018-11-30 | 2019-08-23 | 阿里巴巴集团控股有限公司 | 使用去中心化决策更新区块链智能合约 |
CN109451061A (zh) * | 2018-12-20 | 2019-03-08 | 全链通有限公司 | 区块链的合约调整处理方法和系统 |
CN109451061B (zh) * | 2018-12-20 | 2021-06-01 | 全链通有限公司 | 区块链的合约调整处理方法和系统 |
CN110413304A (zh) * | 2019-07-31 | 2019-11-05 | 中国工商银行股份有限公司 | 基于区块链网络的智能合约热升级方法及装置 |
CN110413304B (zh) * | 2019-07-31 | 2023-07-14 | 中国工商银行股份有限公司 | 基于区块链网络的智能合约热升级方法及装置 |
CN111475777A (zh) * | 2020-03-09 | 2020-07-31 | 上海能链众合科技有限公司 | 一种区块链智能合约的升级方法 |
CN111475777B (zh) * | 2020-03-09 | 2023-04-25 | 上海零数众合信息科技有限公司 | 一种区块链智能合约的升级方法 |
CN112085604A (zh) * | 2020-09-10 | 2020-12-15 | 北京金山云网络技术有限公司 | 一种升级智能合约的方法及装置 |
CN115996130A (zh) * | 2023-03-23 | 2023-04-21 | 安徽中科晶格技术有限公司 | 基于预置合约的dao治理方法、装置、设备及存储介质 |
CN115996130B (zh) * | 2023-03-23 | 2023-06-30 | 安徽中科晶格技术有限公司 | 基于预置合约的dao治理方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109003187A (zh) | 一种区块链智能合约的更新升级方法 | |
Van Apeldoorn | Transnational class agency and European governance: The case of the European Round Table of Industrialists | |
Van Biezen | On the theory and practice of party formation and adaptation in new democracies | |
Birnbaum et al. | Exit strategy or exit trap? Basic income and the ‘power to say no’in the age of precarious employment | |
Schain | Immigration and changes in the French party system | |
CN102592059A (zh) | 网络游戏系统、游戏和服务器装置及电脑可读取记录媒体 | |
WO2007049328A1 (ja) | エレベータシステム | |
Aust et al. | Towards activation? Social assistance reforms and discourses | |
CN106022108A (zh) | 一种同步管理方法及终端设备 | |
CN105727558A (zh) | 互动邀请处理方法和装置 | |
Bell | Post-Brexit nationalism: challenging the British political tradition? | |
Rodriguez | Recasting federalism in Mexico | |
Andras et al. | Environmental risk, cooperation, and communication complexity | |
CN107577494A (zh) | 一种基于多进程赛事图文直播的方法及装置 | |
CN110691634A (zh) | 信息处理设备、信息处理方法和程序 | |
Kerkin | Discourse, representation and urban planning: How a critical approach to discourse helps reveal the spatial re-ordering of street sex work1 | |
Steenkamp et al. | People and parks: cracks in the paradigm | |
CN101132562A (zh) | 蜂窝按讲业务的话语权控制方法及系统 | |
Leahy | Campaign strategies: How the campaign was won and lost | |
Musella et al. | The expansion of the Constitutional Court in Italy: Ruling the void in times of political instability | |
Bressanelli | The Political Groups as Organisations: The Institutionalisation of Transnational Party Politics | |
Verebelyi | OPTIONS FOR ADMINISTRATIVE REFORM IN HUNGARY. | |
JP2022147218A (ja) | 情報処理装置、情報処理方法、及びプログラム | |
Aunger et al. | Lessons from a successful national sanitation programme: the case of Nyumba ni Choo in Tanzania | |
Lindholst et al. | The politics of place-keeping |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181214 |