首页 > 其他分享 >第五讲 Weldentity分布式身份解决方案、智能合约初探

第五讲 Weldentity分布式身份解决方案、智能合约初探

时间:2023-04-24 13:59:22浏览次数:45  
标签:联盟 Weldentity Solidity 智能 num 初探 区块 合约 分布式

什么是智能合约

1996年,Nick Szabo在文章《Smart Contracts:Building Blocks For Digital Markets》中提出了智能合约的概念
所谓“合约”,就是条文、合同一类的东西,里面记录了发生的条件与对应执行的条款,以支持确权等操作;所谓”智能”,就意味着自动化、可编程。

所以,智能合约就是可编程的合同,也可以理解为一段自动执行的条文合同,在计算机中,就是一段自动执行的程序片段。它更易于合约保存,并且由确定的算法运行,给定输入,就得到对应的输出,极大保障了合约的执行力。

以自动售货机做类比,可以帮助我们更好地理解智能合约的核心特征。

当使用者选择好要购买的货物并完成支付,出货逻辑就会被触发,用户就能得到想要的货物,而这个过程不需要人工介入,节省了售卖货物的人力成本。如果要破坏这个合约,就得物理破坏售卖机。像POS刷卡机、EDI(电子数据交换)等,也可作此种类比。

智能合约与区块链

智能合约在上世纪被提出,而区块链2009年才诞生,就定义而言,智能合约与区块链关系不大。

那为什么在这10年中,智能合约与区块链却产生了如此紧密的关联?因为区块链可以保证智能合约
的不可算改,不仅合约内容不可算改,每次调用记录亦不可算改。

智能合约产生价值的最基本前提是有一个强有力的底层介质用于储存,让其不可被物理破坏。

然而,智能合约的本体是一份代码,非常容易被算改,如何为其提供强力的存储介质就成了问题。
这正好是区块链擅长解决的——通过比特币的实践,证明了区块链可以在分布式环境下让电子记录
不可被慕改。

与此同时,智能合约也在反哺着区块链,它极大地扩展了区块链的业务场景。

与智能合约结合后,区块链不再服务于单一的货币支付,可以延申到生活中的方方面面。丰富的应
用场景也对区块链的能力产生了新的挑战。

智能合约的现状与前景

从编程角度而言,智能合约就是一段代码。相比常规代码,智能合约具有许多差别与限制,例如:

·单线程执行
·代码执行会消耗资源,不能超出资源限制
·目前难以获取链外数据,例如取得天气信息、比赛结果等
·其他限制,如TPS
这些特点使得目前智能合约生态以链上资源的治理为核心。就像以太坊上各式各样的ERC标准与治
理方案;EOS上有各种资源模型,比如CPU、RAM、Rex、Bancor协议等。

显然,就目前的生态而言,智能合约对现实世界的影响力有限。

但事物总是在发展的。目前,已有许多致力于突破这些限制的研究,典型的有Oracle(谢言机,但
常被称为预言机),它允许智能合约和链外进行交互,这样就能大大提高智能合约的使用场景,衍
佛一台电脑通上了网;再比如那些突破链自身性能瓶颈的尝试,例如支付通道、跨链、plasma、
rollup,它们都从不同角度打破安全与性能的枷锁。

毋庸置疑,智能合约将扮演着越来越重要的角色,将来随着以太坊2.0的落地,也许会开启新一个区
块链时代。

智能合约技术

以太坊采用了Solidity作为智能合约语言,Solidity是一门为实现智能合约而创建的高级编程语
言,能在允许以太坊程序的节点上运行。该语言吸收了C++、JavaScript的一些特性,例如它是静
态类型语言,支持继承、库等。
除了Solidity,每个平台的智能合约技术也有所不同,接下来将从公有链、联盟链作为切入,介绍
其他平台所采用的技术。

公有链

首先,不妨先认识三大公链的智能合约技术。

联盟链

除了公链,联盟链也是重要的区块链类型。比之公链,联盟链共识的复杂度被大大缩减,因此具有
更高的执行效率

联盟链受企业级机构青眯,一般而言,相关机构之间会形成联盟,通过联盟链来共享数据。联盟链
可覆盖供应链金融、司法存证、溯源等多种场景,未来还会与IOT、AI等技术结合。

在当今联盟链生态中,除去采用chaincode的Fabric,大部分平台都采用Solidity作为智能合约语
言,FISCO BCOS即是如此。

时下,Solidity可调占据了智能合约的C位,掌握Solidity是学习智能合约和区块链的重要一环。后面系
列也将对如何用Solidity编写、运行以及测试智能合约作深入介绍解析,敬请关注。

除了Solidity,WebAssembly、Libra的Move等一些智能合约语言也在发展中,可以保持关注。

智能合约运行分析

下面将分享一个基础的智能合约:HelloWorld。

点击查看代码
pragma solidity 0.4.22;

contract HelloWorld{
uint private_num;
function store(uint256 num) public {
_num = num;
function get() public view returns (uint256){
return_num;

光从代码来看,合约开发似乎不过如此,单个合约只需要围绕着字段进行操作,对于很多简单业务
而言,不过是CRUD而已。
但其复杂性也恰恰在于此,合约在区块链环境上执行,是不可修改的。
所以如果出现了bug,就必须部署新的合约,这对于合约的可维护性提出了挑战。并且,一旦业务
复杂起来,容易出现安全漏洞,导致链上资产损失,同时,还要考虑完成代码编写、逻辑执行、数
据存储的成本问题。
综上所述,写合约不难,但写好合约,却需要一定功底

结语

本文介绍了智能合约的概念与历史演变。
智能合约是上世纪提出的技术,在区块链浪潮下焕发出了新的生机。反之,智能合约广泛的应用场
景,又极大的促进了区块链发展。
学习智能合约,推荐选择Solidity语言,因为其具备一些传统语言的特征,同时,执行环境完全基
于区块链,实际业务开发的体验与以往的编程体验会有所差别。

标签:联盟,Weldentity,Solidity,智能,num,初探,区块,合约,分布式
From: https://www.cnblogs.com/yimumengke/p/17349204.html

相关文章

  • redis实现分布式锁
    分布式锁是由共享存储系统维护的变量,多个客户端可以向共享存储系统发送命令进行加锁或释放锁操作。Redis作为一个共享存储系统,可以用来实现分布式锁。在基于单个Redis实例实现分布式锁时,对于加锁操作,我们需要满足三个条件。1.加锁包括了读取锁变量、检查锁变量值和设置锁变量......
  • .net使用nacos配置,手把手教你分布式配置中心
    .net使用nacos配置,手把手教你分布式配置中心Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。这么优秀的分布式服务管理平台,怎么能不接入呢?nacos的安装和使用这里就不细说了,可以参考网上教程和官方文档。https://nacos.io/zh-cn/docs/quick-start.htm......
  • .NET CORE开源 DDD微服务 支持 多租户 单点登录 多级缓存、自动任务、分布式、日志、
    源代码地址https://github.com/junkai-li/NetCoreKevin基于NET6搭建跨平台DDD思想WebApi架构、IDS4单点登录、多缓存、自动任务、分布式、多租户、日志、授权和鉴权、CAP、SignalR、docker部署 如需简约项目可直接去除项目引用解耦设计都可以单独引用架构默认全部引用并启动......
  • 夜莺初探三·Categraf采集器
    夜莺初探三·Categraf采集器前言github仓库文档中对Categraf有很详细的介绍,简单重复一下就是:支持多种数据格式的remote_write;All-in-one的设计理念,指标采集只需要一个agent完成,也计划支持日志和调用链路的数据采集;Go编写,依赖少,容易分发和安装;内置一些监控大盘和告警规则,用户可......
  • redis 做分布式限流
    参看来源:https://blog.51cto.com/u_15708799/5703440 测试有效代码:我们要做的是:当并发请求超出了限定阈值时,要延迟请求,而不是直接丢弃 。当然也可以把结果给业务端,看业务端是提醒用户下次,还是延迟处理,还是丢弃。 @TestpublicvoidtestLimitWait()throwsInterru......
  • 分布式发布订阅消息系统 Kafka
    kafka是一种高吞吐量的分布式发布订阅消息系统,她有如下特性:通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。高吞吐量:即使是非常普通的硬件kafka也可以支持每秒数十万的消息。支持通过kafka服务器和消费机集群来分区消息。支......
  • 分布式锁-Redisson
    分布式锁1、分布式锁1.1本地锁的局限性1.1.1测试代码1.1.2使用ab工具测试(单节点)1.1.3本地锁问题演示(集群情况)1.2分布式锁实现的解决方案1.3使用Redis实现分布式锁(了解即可)1.3.1编写代码1.3.2压测1.4使用Redisson解决分布式锁1.4.1实现代码1.4.1压测1.4.2可重入......
  • Ffmpeg分布式视频转码问题总结
    本文主要聊一聊云原生时代分布式转码系统实施过程中碰到的一些问题。聊问题之前简单介绍一下我们的分布式转码方案。云原生分布式转码在计算资源招之即来的云计算时代,正在重构着软件架构的方方面面。对软件架构师或者运维管理者影响比较大的一个点便是不需要在做容量规划,不需......
  • Mysql分布式锁的简单实现
    在做多线程操作数据库时避免不了的会遇到线程之间争抢同一条记录的问题,在mysql里可以实现分布式锁解决线程的反复调用问题。具体方法是利用数据库的唯一约束,设置一个比如状态的列来判断此记录是否正在被线程处理,可以默认值为0,表示未被处理,当值变为1时表示正在处理,值为2时......
  • 高性能分布式网络服务器框架
    该项目是使用C/C++开发的一款高性能的后端分布式服务器网络框架。该项目具有如下要点:使用C++11重写并简化muduo网络库;仿写了tcmalloc的高并发内存池;加入了sylar的日志模块并将其改进为异步日志;使用到了protobuf和Zookeeper来作为分布式协调服务;项目地址:https......