区块链与智能合约

什么是区块链

要想理解什么区块链,我们先来从本质上认识一下它

区块链:本质上是一个去中心化的分布式账本数据库,是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方法。

没有基础的人可能理解起来有点困难,我们来解释一下里边的名词

分布式账本数据库:了解过后端的人应该知道什么是数据库,我们简单的来讲述一下,数据库,顾名思义就是存放数据的仓库,只不过这个仓库是虚拟的,传统数据库一般在部署在后台服务器上,人们可以在里边储存信息。而分布式账本数据库就是没有一个中心服务器,数据存在每个用户的节点上,是分布的。

去中心化:在传统数据库中,往往是由一个公司或团队运营一个服务器,我们的数据都存在那里,他就相当于一个中心,这样的缺点就是我们无法左右和得知数据的非法篡改。因为权力都掌握在“中心”上,而去中心化便是我们每个人都有平等的权力,都可以看到彼此的数据。

比特币和以太坊

接下来我们介绍一下前几年特别火的比特币,和随后诞生的以太坊

比特币是最早使用区块链技术的协议之一(在去中心化的网络下进行p2p交易,这个网络以密码学算法为基础,能够让人们以去中心化的方式,发生非许可的金融行为)

Buterin在了解了区块链技术以后,进行了进一步的发展,与其他联合人发布了一个名叫以太坊的新协议(其使用区块链的基础设施,但是多了一些新的功能,人们不仅可以进行去中心化交易,还可以签署去中心化的合同,构建去中心化的组织,以及在不需要中心化中介的情况下,以去中心化的方式进行协作)

简单来说他们的想法是使用比特币中的技术,再加上去中心化的合同,或者叫做智能合约

这就引出了我们下一个要介绍的新名词

智能合约

那我们对智能合约下一个定义:智能合约是通过去中心化的方式来执行一些列的指令,在这些指令执行中,并不需要中心化或者第三方的中介。

简单来说就是部署在去中心化区块链上的一个合约或者一组指令

一旦这个指令被部署,他就不可被更改,他会自动执行,每个人都可以看到合约中的条款

深层次的理解是,这些代码会被去中心化地执行

与传统合同相比,智能合约也是约定多个参与方的一些列指令,以代码的形式嵌入到一个去中心化的区块链平台

从技术上讲,比特币有智能合约,他能完成p2p交易这个功能,但他不能执行一个编程语言的所有指令

比特币开发者将比特币作为价值存储,而以太防的开发者在此之外,还讲将它当成一个运行去中心化合约的平台

我们可以粗略的理解,区块链是去中心化的数据库,而智能合约就是能实现具体功能的去中心化协议

但这存在一个问题

要想像传统合同一样,实现其功能,必须要有外部信息的输入,但是区块链本身无法获取真实世界的信息,这是因为区块链网络都是确定性系统他们会根据预设的规则去验证。

智能合约能获得发生在区块链上的所有信息但他们想要作为日常合同使用的话,他们需要外部的数据和外部的计算。

要做到这一点,我们就需要下面介绍的东西

预言机

预言机定义:是任何可以向区块链输入数据或者进行链下计算的设备

这就产生了另一个问题,如果预言机只有一个的话,那和有一个服务器一样都是中心化的,然而我们想要应用的是真正去中心化的我们不能只通过单个预言机或单个数据提供商获得数据,或者单个资源去进行外部运算,我们需要一个像去中心化区块链网络(在链上的逻辑是去中心化的)一样的去中心化预言机(在链上的数据和计算也是去中心化的)网络

Chainlink 就是一个组件化去中心化的预言机网络,它不仅可以给智能合约提供外部数据,还可以提供链下计算。这就使其链上和链下部分都是去中心化的,它提供了丰富的功能,可以让智能合约可以向日常合同一样使用

智能合约部署在去中心化的区块链上,同时结合另一个去中心化的预言机网络,获取真实世界的资产和信息便形成了混合型智能合约(将链上去中心化逻辑和链下去中心化数据和计算相结合)

区块链的优点

1.完全去中心化(没有中心化的中介)一个区块链上由不同的参与者运行,这些参与者被称为节点运营者成千上万的结点运营者运同一个软件,运行这些算法

2.透明性和灵活性,由于所有节点运营者都运行这个软件,每个人都可以看到链上发生的任何事情,每个人获得的信息是一致的并且在统一规则下协作,

3有速度和效率,在区块链上所有交易都会即时发生,

4安全和不可更改性:一旦智能合约被部署,他就不能被改变了,要攻击区块链必须控制一半的节点

5可信任

6.不可打破

智能合约的优点

智能合约创建了信任最小化协议,提供了更好的性能

智能合约是不可更改的,去中心化的,透明的

能够解决当今合同不履行问题的技术

区块链的运行机制

block,nounce,data ,prev三方面结合运算出哈希值

区块链会在进行哈希计算时加上前面的哈希值,再创造出一个区块,第一个区块被称为创世区块,他的prev全是0

当我们试图在区块上篡改数据的时候,该区块后边的区块都会出现错误,整个区块链就会发生错误,这就是区块链无法篡改的原因

但是如果我们掌握了整个区块链,还是可以将整条链修改,这时去中心化作用就出现了

修改后的整个区块链虽然是正确的,但最后的哈希值会不同

最后的

不同的用户都在运行这个区块链,它们的权重是相同的,最后一个区块的哈希值包含了前面所有区块的信息

那如何确认是我们进行了操作呢

私钥验证用户身份

我们可以使用私钥创建信息签名,但是别人不能从信息签名中得到我的私钥

公钥是公开的,每个人通过这个公钥都可以验证用户的身份

区块链的防御机制

粗略分为:选择算法和抗女巫攻击机制

抗女巫攻击机制:来防止用户使用大量的假身份,防止其在整个系统中获取超出应有比例的权益和影响力

通过共识这个原则防御

补充知识:

共识:工作量证明和权益证明

共识的定义是一个机制,通过这个机制,区块链可以在状态和数值上达成一致(中本聪共识:去中心化网络规定,哪条链最长,有最多的区块,就用哪条链,工作量证明,最长链规则)

工作量证明:节点必须完成需要很大计算量的过程

每个区块链都会有意让难题更难或者更简单,从而调整出块时间

出块时间是每个区块被发布之前的时间,它和这些算法的难度相关

权益证明:工作量证明往往要消耗大量的电力,许多人就开发了另一种验证方式,

需要放置一些抵押物以保证不作恶(质押)

可以验证谁挖出了区块

两个可能的攻击:

女巫攻击:在攻击中用户会创建很多匿名账户来影响区块链

51%attack:由于上述共识的缘故,你有最长的链和51%的网络就可以分叉区块链,让整个网络使用你的链

区别:女巫攻击是指单一用户,通过创建大量的假帐户来影响这个网络

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/774873.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

相位解包裹前识别有效区域和无效区域(条纹和背景区域区分)

对于不连续场进行相位解包的时候,首先要识别出图象中的哪些部分为有效数据,哪些部分为非有效数据"。这不仅关乎着相位解包算法的速度,更影响着解包算法的精度。因此在解包之前,对有效区域和无效区域的判断必须是首先要做的一件事情。下面就来介绍一下什么是有效区域和…

leetcode169-Majority Element

这道题目要求数组中最多的那个元素,这道题目的解法比较直观,直接遍历元素也可以有一个很好的时间复杂度。注意这里的遍历要求技巧,我们可以建立一个哨兵元素,并且记录哨兵元素出现的次数,如果遍历到的元素和哨兵元素一…

全国地质灾害点shp崩塌滑坡泥石流空间分布地质灾害详查等数据集

地质灾害是指在自然或者人为因素的作用下形成的,对人类生命财产造成的损失、对环境造成破坏的地质作用或地质现象。地质灾害在时间和空间上的分布变化规律,既受制于自然环境,又与人类活动有关,往往是人类与自然界相互作用的结果。…

【C++】每日一题 35 搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 #include <iostream> #include <vector>int searchIns…

LeetCode:1319. 连通网络的操作次数(并查集 Java)

目录 1319. 连通网络的操作次数 题目描述&#xff1a; 实现代码与解析&#xff1a; 并查集 原理思路&#xff1a; 1319. 连通网络的操作次数 题目描述&#xff1a; 用以太网线缆将 n 台计算机连接成一个网络&#xff0c;计算机的编号从 0 到 n-1。线缆用 connections 表示…

基于单片机的自动浇灌系统的设计

本文设计了一款由单片机控制的自动浇灌系统。本设计的硬件电路采用AT89C51单片机作为主控芯片,采用YL-69土壤湿度传感器检测植物的湿度。通过单片机将采集湿度值与设定值分析处理后,控制报警电路和水泵浇灌电路的开启,从而实现植物的自动浇灌。 1 设计目的 随着生活水平的…

MrDoc寻思文档 个人wiki搭建

通过Docker快速搭建个人wiki,开源wiki系统用于知识沉淀,教学管理,技术学习 部署步骤 ## 拉取 MrDoc 代码 ### 开源版: git clone https://gitee.com/zmister/MrDoc.git### 专业版: git clone https://{用户名}:{密码}@git.mrdoc.pro/MrDoc/MrDocPro.git git clone https…

怎么批量修改文件名中的一部分?

怎么批量修改文件名中的一部分&#xff1f;批量修改文件名中的一部分文字是我们在处理大量文件时经常需要做的任务之一。这项工作可以极大地提高工作效率&#xff0c;节省宝贵的时间。无论是对于个人用户还是企业组织来说&#xff0c;都是非常实用的技能。首先&#xff0c;批量…

嵌入式要卷成下一个Java了吗?

嵌入式只是一个技术方向&#xff0c;里面有冗杂的技术栈。与Java不同&#xff0c;一台电脑就可以练习大部分的技能&#xff1b;嵌入式可以说是电子技术的一个细分方向&#xff0c;更多时候会接触到更加底层的东西&#xff0c;这时候&#xff0c;难免会和硬件打交道。 而对于相…

【Hexo + Github 搭建自己的专属博客】

目录 一、前提环境配置 1. 安装Git和NodeJS 2. 安装Hexo 3. 加载主题 4. 修改主题配置 二、搭建博客 1. 将博客部署在GitHub上 2. 写文章并上传 3. 配置一些特效 三、最终成果 ​编辑 一、前提环境配置 1. 安装Git和NodeJS 在 Windows 上使用 Git &#xff0c;可以…

【深度学习】【机器学习】用神经网络进行入侵检测,NSL-KDD数据集,基于机器学习(深度学习)判断网络入侵

文章目录 下载数据集NSL-KDD数据集介绍输入的41个特征输出的含义数据处理&&训练技巧建神经网络&#xff0c;输入41个特征&#xff0c;输出是那种类别的攻击模型训练模型推理写gradio前端界面&#xff0c;用户自己输入41个特征&#xff0c;后端用模型推理计算后显示出是…

Jenkins--在Linux上使用Docker安装

一、Jenkins 简介 Jenkins是一个流行的开源自动化服务器&#xff0c;用于持续集成和持续交付&#xff08;CI/CD&#xff09;。Jenkins的核心功能主要包括以下几点&#xff1a; 持续集成&#xff1a;Jenkins可以监控版本控制系统&#xff08;如Git、SVN&#xff09;中的代码变…

Milvus+ATTU环境搭建

1.使用Docker Compose安装Milvus Standalone 下载安装单机版milvus向量数据库 https://milvus.io/docs/install_standalone-docker.md wget https://github.com/milvus-io/milvus/releases/download/v2.2.12/milvus-standalone-docker-compose.yml -O docker-compose.yml sud…

java中的static和单例模式

同一个类中&#xff0c;访问其类成员&#xff0c;可以省略类名不写 static&#xff1a;叫静态&#xff0c;可以修饰成员变量&#xff0c;成员方法。 成员变量按照有无static修饰&#xff0c;分为两种&#xff1a; 类变量&#xff1a;有static修饰&#xff0c;属于类&#xf…

模型训练----加载自己的数据集,train.txt包含“路径,类别”

今天想训练一个restnet&#xff0c;之前我是会用文件夹的方式加载数据集&#xff0c;但是师兄给我的数据是用.txt文件划分的训练集和验证集&#xff0c;知道是要把路径和标签提取出来&#xff0c;搞了半天没搞成&#xff0c;后边找到咋搞了。 点击查看 纯真丁一郎博客点击访问…

产品经理的6个关键职责

1. 前言 本文深入探讨了产品经理的六个关键职责,全面解析了产品经理在产品开发与市场运营中的核心作用。首先,市场调研是产品经理的基础工作,通过对市场趋势、用户需求及竞争态势的深入研究,为产品决策提供有力支持。其次,产品定义及设计是产品经理的核心能力,他们需精准…

蓝桥杯:Python基础学习一

目录 一、遍历列表 1.使用for 循环和 enumerate()函数实现 2.案例代码 二、对列表进行统计和计算 1.统计数值列表的元素和 2.案例代码 三、对列表进行排序 1.使用列表对象的sort()方法 2.使用内置的 sorted()函数实现 四、列表推导式 1.从列表中选择符合条件的元素组…

小程序上线操作流程

目录 1.客户进入小程序后台,依次进入:用户身份->管理员->修改。 2.填写原来管理员的身份证号码和使用绑定了原管理员本人银行卡的微信,扫描二维码。 4.设置服务器配置信息 5.打开”微信web开发者工具” ,扫码登录。调试类型选择”本地小程序项目” 6

Matlab|计及电池储能寿命损耗的微电网经济调度

目录 1 主要内容 储能寿命模型 负荷需求响应 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序参考文献《考虑寿命损耗的微网电池储能容量优化配置》模型&#xff0c;以购售电成本、燃料成本和储能寿命损耗成本三者之和为目标函数&#xff0c;创新考虑储能寿命损耗约…

【Java跳槽面试必备】2024年最新八股文

Java基础面试题 Java的特点 Java 与 C 的区别 JDK/JRE/JVM三者的关系 Java程序是编译执行还是解释执行&#xff1f; 面向对象和面向过程的区别&#xff1f; 面向对象有哪些特性&#xff1f; 数组到底是不是对象&#xff1f; Java的基本数据类型有哪些&#xff1f; 为什么不能用…