Blockchains & Distributed L week3 爱宝授课记录(1)

这篇具有很好参考价值的文章主要介绍了Blockchains & Distributed L week3 爱宝授课记录(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

智能合约 smart contract

现在我们的生活几乎离不开合同,往大说,工作是与公司签订的劳动合同,买房是与房产公司签订购房合同,买保险是与保险公司签订保险合同;往小了说,网购、定外卖、打车、买彩票都是与相关的服务提供公司签订了相应的合同。可以说,有人的地方就用合约。

甚至我们与人打赌,也是一种合约,但如果一旦一方抵赖,那履行合约就会变得困难。如果有一种合约,事先确定了规则,一旦触发相关条款,合约将自动执行,无需人为干涉,也不用担心有人抵赖。又比如每个人可能会在未来的某一天要去做一件事情,进行提醒或者到时间自动执行,并且反馈一个结果。那么现在是否存在这样的工具能够做到呢?还真有,这便是智能合约。

01 什么是智能合约

智能合约(Smart Contract)是上世纪90年代由密码学家尼克·萨博提出的理念,由于当时缺乏可信的执行环境,智能合约没有被应用和发展,直到以太坊的出现,才让智能合约得以“复活”。**

那智能合约到底是什么呢?简单来说智能合约就是用计算机语言取代了法律语言记录条款并由程序自动执行的合约。换句话说,智能合约就是传统合约的数字化版本,跑在区块链网络上,由程序自动执行。

自动售货机、ATM取款机,在某种程度上都可以被理解为执行智能合约的机器,但这都不是真正意义上的智能合约。

与传统的合约相比,智能合约有三大特点:

1、合约内容公开透明 **智能合约部署在区块链上,其合约内容自然是公开透明的。

2、合约内容不可篡改 **同样,因为部署在区块链上原因,智能合约的内容是无法被修改的。

3、永久运行 **运行在区块链上的智能合约,同样被区块链上网络节点共同维护,只要区块链在,智能合约就能永久的运行下去。有种“链在合约就在”的兄弟情义之感。

有区块链三大特点加持的智能合约,与传统的合约相比主要有如下优势:

1、去信任。

由于智能合约是基于区块链的,合约内容公开透明、且不可篡改。代码即法律(Code is law),交易者基于对代码的信任,可以在不信任环境下安心、安全地进行交易。

2、经济、高效

相比传统合约经常会因为对合约条款理解的分歧,造成纠纷;智能合约通过计算语言很好避免了分歧,几乎不会造成纠纷,达成共识的成本很低。在智能合约上,仲裁结果出来,立即执行生效。因此相比传统合约,智能合约有经济、高效的优势。

3、无需第三方仲裁

假设熊大和熊二打赌,赌明天是否会下雨,谁输了的一方就需要给对方100元。如果输的人抵赖,赢了的人就得不到奖励。为此,去找第三方仲裁机构,低效且费时费力。但如果赌约写在智能合约上,在达成赌约之时,各自把100元打入智能合约地址,智能合约根据最终的结果,自动执行,赢的一方拿走所有的奖励。可见,智能合约就无需第三方仲裁。

智能合约也有它的缺点。

如果智能合约存在漏洞,黑客可以利用智能合约的漏洞,为自己牟利。

举个简单的例子,一台自动售货机,本来售价是5块的饮料,由于疏忽,写成了5毛钱,管理员发现之后,可以立刻改正。但如果这台售货机调用的是区块链上的智能合约,那么这个错误将无法修改,直到里面饮料卖完。

另一方面,智能合约本身无法获取(感知)外部的信息,涉及到需要外部信息才能裁决合约,需要对其写入相关信息,它才能作出裁决。比如熊大和熊二打赌明天是否下雨的例子,智能合约本身是不知道第二天是否下雨了没,需要通过其他信息源为它提供信息,比如中央气象台数据,有了这个信息之后,智能合约才能做出裁决。

从上面两点看,智能合约既不完美也不智能。(还需要完善 还有完善空间)

总结:

智能合约是用计算机语言取代了法律语言记录条款、由程序自动执行的合约。部署在区块上的它,也具备了区块链的数据公开透明、不可篡改、永久运行的特点。

与传统的合约相比,智能合约有去信任、安全、高效、无需第三方仲裁的优点。但智能合约并不完美,而且也不智能或者说它的智能程度很低。

以下三个视频,通俗易懂讲解了合约是什么。

什么是智能合约?哔哩哔哩bilibili

简单解释智能合约是什么哔哩哔哩bilibili

【中文高清科普】三分钟看懂以太坊和智能合约哔哩哔哩bilibili

了解到这,下边这个ppt就能看懂了,至于context应该是背景,老师没提。可以不管。

Blockchains & Distributed L week3 爱宝授课记录(1)

 

比特币交易

什么是 UTXO?

UTXO 代表 Unspent Transaction Output, 表示未花费的输出。

以现实的钱包举例,一个钱包中有一个10元、1个5元,1个1元,一共16元。比特币一个账户的余额,也是根据这个账户UTXO计算的。

当花12元买东西时,可以把10元和5元拿出去,然后得到找零的3元, 那这个时候之前的10元和5元因为已经花出去了就不再是UTXO了,新找零的3元成为新的UTXO,再加上之前未动的1元UTXO,目前的余额是4元。这次新的交易记录在了新的区块上,但没有改变历史区块的数据。

中本聪提出了UTXO,一种基于交易的记账方式。刚才讲的,支付宝、微信那种记账方式,是基于账户的记账方式。仍然举这个例子,通过使用UTXO记账方式。比如,你有10元钱,花了5块钱,出来一个“之前剩余10元,现在剩余5元”的UTXO账单;然后收到3元钱,又出来一个“上次剩余5元,现在剩余8元”;... ... 以此类推。那么这种模式下,即使你之前的账单丢失了,也能知道当前的余额。并且与基于账户的记账方式相比,在计算复杂度、存储空间等方面,都很占优势。

以下是一个例子

Blockchains & Distributed L week3 爱宝授课记录(1)

 

从上面的图中可以看出,比特币存储的实际是一笔又一笔的交易,最后永远只有未花费过的交易输出,也就是UTXO。

相信大家应该能明白UTXO的概念和工作方式了吧,UTXO的方案简单到极致,只确认交易本身。总结一下UTXO的优点:

(1) UTXO不能分割,只能被消耗,独立的数据结构大大减少了计算量。

(2) UTXO配合地址使用,具备天然的匿名性,保证了账户的安全。

(3) 因为地址的存在,UTXO的销毁和产生,都可追溯,很难伪造。

(4)长期来看,UTXO的数据占用更小,而余额系统会越来越臃肿。

所以大家看明白了吧,比特币不是具体的钱币,只是UTXO账单上的一个数。

比特币交易中的输入与输出

比特币交易是将比特币从一个地址转移到另外一个地址,不同的比特币地址代表不同的比特币所有者,所以比特币交易就是比特币的所有者授权将比特币转移给新的所有者。当然新的比特币所有者也可以授权将比特币转移到另外的所有者,以此类推,形成了比特币所有者的链。

比特币交易就像是复式记账账簿中的一行,每笔交易包含一个或多个“输入”,称为交易输入,就像是复式账簿中的借方 从哪来的(debits);交易的另一方包含一个或多个“输出”,称为交易输出,就像是复式账簿中的贷方 (credits)。

交易单的数据如下:

In:

Previous tx: f5d8ee39a430901c91a5917b9f2dc19d6d1a0e9cea205b009ca73dd0

4470b9a6

Index: 0

scriptSig: 304502206e21798a42fae0e854281abd38bacd1aeed3ee3738d9e1446

618c4571d1090db022100e2ac980643b0b82c0e88ffdfec6b64e3e6ba35e7ba5fd

d7d5d6cc8d25c6b241501

Out:

Value: 5000000000

scriptPubKey: OP_DUP OP_HASH160 404371705fa9bd789a2fcd52d2c580b65d35

549d OP_EQUALVERIFY OP_CHECKSIG

交易单记录的是本次交易的收入来源(in)和支出(out)。当你支出(给)一笔钱的时候,首先在交易单中就要描述清楚你要支出(out)的钱的收入来源 (in),然后在支出(out)项中,指明要支出的金额,以及通过脚本的形式写明接收者的公钥,然后用自己的私钥签名(scriptSig)认可该笔交 易,最后将交易单广播到网络。

收入来源(in):

Previous tx: 为收入来源交易单的散列值,也就是待支付的钱是谁给你的,经常会有多个收入来源被列在交易单中

index: 指明是收入来源交易单中具体哪一个out,也就是Previous tx交易单中的out索引值(因为out也可以有多个)。

scriptSig: 拥有者对该交易的ECDSA签名认可。

接收对象(out):

Value: 发送的币值,以Satoshi 为单位,1BTC = 100,000,000 Satoshi

scriptPubKey: 接收方的公钥脚本。

in与out的关系:

每一笔交易,out的总额应该等于in的总额。但是,在这个交易单里,只会有out的Value,没有in的Value,而是通过in的Pervious与index,追溯到上一个交易单的某一个out,获得Value。

A给B转账的时候,会先用A的私钥进行签名,再转账给B的公钥。

这个过程,说明了2件事:用A的私钥签名,证明了这笔钱是A的;转账给B的公钥,证明了这笔钱是转给B的,不是转给别人的。

接下来,B要花这笔钱,比如转给C;同样的,要用B的私钥签名,转账给C的公钥。

scriptPubKey就是我们所说的,对方的公钥

scriptSig 主要是提供用于交易输出中 ScriptPubKey 所需的验证数据文章来源地址https://www.toymoban.com/news/detail-802725.html

到了这里,关于Blockchains & Distributed L week3 爱宝授课记录(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【北邮国院大三下】Cybersecurity Law 网络安全法 Week3

    北邮国院大三电商在读,随课程进行整理知识点。仅整理PPT中相对重要的知识点,内容驳杂并不做期末突击复习用。个人认为相对不重要的细小的知识点不列在其中。如有错误请指出。转载请注明出处,祝您学习愉快。 编辑软件为Effie,如需要pdf/docx/effiesheet/markdown格式的文件

    2024年02月11日
    浏览(45)
  • 【WEEK3】 【DAY3】JSON交互处理第二部分【中文版】

    2024.3.13 Wednesday 接上文【WEEK3】 【DAY2】JSON交互处理第一部分【中文版】 上一种方法比较麻烦,如果项目中有许多请求则每一个都要添加,可以通过Spring配置统一指定,这样就不用每次都处理乱码了。可以在springmvc的配置文件上添加一段消息StringHttpMessageConverter转换配置。 修

    2024年04月08日
    浏览(44)
  • 【WEEK3】 【DAY2】JSON交互处理第一部分【中文版】

    2024.3.12 Tuesday JSON (JavaScript Object Notation, JS 对象标记) 是一种 轻量级的数据交换格式 ,目前使用特别广泛。 采用完全独立于编程语言的文本格式来存储和表示数据。 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,

    2024年03月20日
    浏览(78)
  • 前端架构师-week3-Node项目如何支持ES Module

    目录 方案一: 通过 webpack 完成 ES Module 资源构建 通过 webpack target 属性支持 Node 内置库 webpack loader 配置 babel-loader 支持低版本 Node  方案二: 通过Node原生支持ES Module Node 支持 ES Module 的两种方法 总结     根目录下创建 webpack.config.js

    2024年02月06日
    浏览(35)
  • 小象课堂在线授课教育系统

    此项目包含后端全部代码,前端包括后台和web界面的源码,数据库用的mysql,可当作课设或者毕设,还可写入自己的简历中 web界面展示: 前端后台界面展示: 用户管理 课程管理 内容配置 订单管理 系统管理 系统监控

    2024年02月12日
    浏览(47)
  • 个人老师可直接使用的在线授课软件

    大家好,我是 Java陈序员 。 大学四年,疫情就占了三年! 以前小时候曾经梦想着不用去学校上课,在家就能上课,这不前几年疫情的时候就成为了现实! 随着互联网的兴起,各种线下的活动都可以搬到线上来执行,线上授课、线上会议等。 今天给大家介绍一个 在线授课 的

    2024年02月04日
    浏览(41)
  • 论文笔记-Authenticated Keyword Search in Scalable Hybrid-Storage Blockchains

    混合存储模型: 只有少量meta-data(加密哈希)存在链上,原始数据外包给链下的存储服务商 提出了一个新的ADS 1.首先提出了抑制默克尔倒置(Merkle inv)索引,该索引仅在链上维护部分 ADS 结构,可以使用对数加密证明进行安全更新。 2.提出了一个变色龙倒置(Chameleon inv)索

    2024年01月18日
    浏览(44)
  • 中外联合培养工商管理博士|社科大新加坡社科大学中文授课DBA

    中外联合培养工商管理博士|社科大新加坡社科大学中文授课DBA 全球经济正在经历由科技进步和创新、政治和人口剧烈变化所带来的巨大的不确定性和挑战。面对日趋复杂的外部竞争环境,企业的领导者和管理者需要具备卓越的战略思维和全球洞察力、以科学的精神和严谨务

    2024年03月09日
    浏览(45)
  • 基于Java web的高校教师授课管理系统 毕业设计开题报告

     博主介绍 :《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、PPT、论文模版

    2024年02月04日
    浏览(54)
  • 区块链相关技术、概念以及技术实现过程中的一些关键问题 Smart Contracts and Blockchains

    作者:禅与计算机程序设计艺术 2017年底,区块链已经成为众多投资人和技术人员最关注的话题之一。随着现实世界的不断复杂化、数字货币的流行以及IoT设备的普及,加密数字货币市场正变得越来越活跃。由于区块链具有去中心化、不可篡改、透明性、高并发等特点,使其

    2024年02月09日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包