以太坊合约分析之远程购买

以太坊合约分析之拍卖算法 拍卖的基本流程很简单,一般就是拍卖人亮出一件商品,拼命的宣传吹嘘商品的价值,然后进入一轮又一轮的竞价过程,待拍卖时间结束,价高者和拍卖人一手交货一手交钱。现场拍卖和数字拍... 阅读详情

640?wx_fmt=png

用户在淘宝上买东西是先将钱转入支付宝,然后卖方发货,用户收到货后确认收获,支付宝就可以将钱打给卖方,如果卖方没有货,卖方就可以终止交易,支付宝将将返还给用户。

640?wx_fmt=png

支付宝在交易中起到信用中介的作用,避免用户钱货两空。虽然支付宝主要是保护了用户方的利益,但是支付宝会从商家店铺收取租金,羊毛出在羊身上,商家再将这笔费用隐形的转给用户。

现在有了以太坊,支付宝作为信用中介的功用就可以被区块链合约所取代。我们看下面这个简单的买卖合约代码。

640?wx_fmt=png

合约代码逻辑采用的形式不同于支付宝的逻辑,合约还多了个押金,这里的押金和实物的价钱相等,买卖的流程也不一样,方向倒置,达到了和支付宝买卖担保一样的功能。

640?wx_fmt=png

  1. 由商铺发起合约,将押金和商品的价钱打到合约账户,表示要卖东西了。

  2. 用户表示对商品感兴趣,于是也交纳等量的押金和商品的价钱到合约账户。

  3. 商铺在线下将商品发送给用户。

  4. 用户收到商品后确认,押金自动返还给用户,合约账户的余额自动返回给商铺。

在用户缴纳押金和价钱后,合约账户余额为4倍价钱,返还押金给用户后,账户余额还剩3倍价钱,这部分余额包含商铺缴纳的押金和价钱,还有用户缴纳的价钱,一起打给商铺。于是交易成功完成。

如果商铺在缴钱之后,不想卖了,这个时候只要用户没有缴钱,商铺是可以主动取消交易的,这个时候合约账户的余额会全部返还给商铺。

一旦用户缴钱了,商铺就不可以反悔,否则就会损失缴纳的费用。

用户一旦收到货了,如果不确认收货,也就拿不到缴纳的押金。

这样就保证了双方都不会失信。下面我们分析代码

代码中this.balance表示合约账户的余额。payable表示该动作需要支付以太币,支付的数量会累加到合约账户的余额。

Purchase()构造器表示商铺发起合约,支付押金和商品的价钱,用户通过查询账户的balance就知道商品值多少钱。

confirmPurchase()表示用户对商品感兴趣,支付押金和商品的价钱。支付成功后,合约账户的余额变成了4倍价钱。

confirmReceived()表示用户收到货了,确认交易完成。合约执行buyer.transfer(value)返还押金给用户,然后再执行seller.transfer(this.balance)将合约的余额返还给商铺。

abort()表示商铺反悔了不想卖了,撤销交易。合约执行seller.transfer(this.balance)将合约余额返还给商铺。

该合约的缺点是商铺和用户如果没有2倍的商品价钱,将无法完成交易。这明显是不合理的。

其实商家只需要交押金,用户只需要交价钱就可以了。押金也没必要等价与价钱,但是也不能太小,以免商家觉得押金太小懒的去取消交易,那用户将无法取回缴纳的价钱,就会给用带来损失。

也许你会问中介费哪里去了,是不是区块链合约不需要交羊毛了呢?

以太坊交易是需要收费的,这部分费用在用户和商铺执行合约动作的时候从相应的外部账户里扣除了,只是从合约代码里无法体现出来。这部分羊毛会被自动奖励给矿工,作为辛勤挖矿的激励,毕竟合约的代码是需要在矿工的机器里执行的。

640?wx_fmt=jpeg

阅读相关文章,关注公众号【码洞】

一篇文章让你读懂以太坊(ETH) 今天不讲行情,不讲项目白皮书,我们今天来讲讲ETH的发展史,以太坊大家都很熟悉,流通市值第二名的数字货币,仅次于比特币。被称为区块链2.0。但是今天我要写的目的是让大家以太坊是怎么从一个默默无闻的小币种成长为全球第二大数字货币。下面我将以以太坊的重要事件为时间线带大家了解以太坊的崛起过程。 以太坊一共分四个阶段 首先我们要知道以太坊一共分四个阶段,Frontier(前沿),Homestead(家园),Metropolis(大都会),Serenity(宁静),阶段之间的转换需要通过硬分叉的方式实现。前三个阶段 阅读详情

相关推荐

4、以太坊端到端交易与智能合约开发及环境搭建

本文详细介绍了以太坊端到端交易流程、智能合约的开发及环境搭建过程。内容涵盖以太坊交易的生成、验证及区块确认流程,使用Remix编写和部署智能合约的步骤,以及Geth、ganache-cli、Solidity编译器和web3框架的安装与配置。同时,还介绍了以太坊的不同网络类型及其适用场景,帮助开发者根据需求搭建私有链和测试网络,适合区块链初学者和开发者学习参考。

flink9streamer的博客 110

远程购买商品Solidity合约

转载网络

weixin_62775913的博客 612

16、以太坊智能合约攻击:重入、弱随机源与业务逻辑

本文深入探讨了以太坊智能合约的安全性问题,重点分析了重入攻击、弱随机源漏洞和业务逻辑漏洞等常见威胁。通过回顾历史上的DAO攻击事件,揭示了智能合约漏洞的原理和利用方式,并提供了防范措施和最佳实践。文章还介绍了如何创建以太坊实验室,模拟攻击场景,并提出了安全开发流程和防御策略,为开发者提供了全面的智能合约安全指南。

silver的专栏 95

跟着示例学习Solidity——安全的远程购买

安全的远程购买 pragma solidity ^0.4.21; contract Purchase { uint public value; address public seller; address public buyer; enum State { Created, Locked, Inactive } State public state; ...

黄嘉成的博客 1062

NFT入门:创建、购买和连接以太坊钱包

本文主要介绍了非同质化代币(NFT)的基本概念、ERC721合约标准以及创建和使用加密钱包来购买、铸造和销售NFT的步骤。文章指出当前NFT市场的自由度极高,几乎所有内容都可以被代币化。同时,作者强调了避免将受版权保护的内容转换为NFT的重要性,并提供了关于如何开始制作NFT的入门指导,包括创建加密钱包、购买以太坊和连接NFT市场等步骤。

weixin_32242475的博客 595

液晶屏LVDS接口:【图文详讲】

​LVDS(Low Voltage Differential Signaling,即低电压差分信号)接口又称RS-644总线接口,是20世纪90年代才提出的一种数据传输和接口技术。LVDS接口是美国NS美国国家半导体公司为克服以TTL电平方式传输宽带高码率数据时功耗大,电磁干扰大等缺点而研制的一种数字视频信号传输方式

weixin_66299220的博客 1万+

以太坊蜜罐智能合约分析

  0×00 前言 在学习区块链相关知识的过程中,拜读过一篇很好的文章《The phenomenon of smart contract honeypots》,作者详细分析了他遇到的三种蜜罐智能合约,并将相关智能合约整理收集到Github项目smart-contract-honeypots。 本文将对文中和评论中提到的 smart-contract-honeypots 和 Solidlity...

Fly_鹏程万里 2244

2026 最新实战教程:AI 重构开发全流程(从需求→上线→运维)

1)做什么系统2)技术栈3)功能模块4)部署要求plaintext我要做一个:待办事项(Todo)全栈应用技术栈:前端:React + TypeScript + Tailwind后端:Node.js + Express + MongoDB部署:Docker + 本地运行(后续可上云)功能:- 增删改查任务- 任务状态切换(完成/未完成)- 简单错误处理请按企业级标准生成:架构设计 + 全部代码 + 接口文档 + 启动命令。

qq_35779316的博客 1714

Solidity-安全的远程购买合约

sol

duoyasong5907的博客 1403

手把手教你实现阿克曼ROS小车的运动控制

本文详细介绍了如何从零开始实现阿克曼ROS小车的运动控制。内容涵盖硬件搭建、STM32底层PID速度与舵机控制、ROS层阿克曼运动学模型解析,以及上下位机通信协议设计。通过手把手的代码示例和调试步骤,帮助机器人爱好者与开发者掌握将高级速度指令转化为小车具体动作的全流程,实现流畅的阿克曼转向控制。

weixin_29193259的博客 200

STM32开发实战--解决STM32CubeMX生成代码时钟初始化卡死问题

本文详细分析了STM32CubeMX生成代码在时钟初始化阶段卡死的问题,提供了多种解决方案,包括简单修改和稳健的等待机制。通过深入探讨HAL库的时钟初始化陷阱及硬件层面的根本原因,帮助开发者快速定位并解决STM32开发中的常见问题。

weixin_26965807的博客 443

聊聊以太坊和智能合约 终篇

聊聊以太坊和智能合约发生的著名漏洞,以及对区块链应用行业的一系列反思。 这也是区块链分享文章四部曲的最终章

Eyemon的博客 1135

SAP BSIS:总账未清项表(Open Items)总账未清项 包含哪些业务 请给以举例说明

SAP总账未清项是指需要未来核销的会计行项目,仅适用于勾选"未清项管理"的总账科目。典型业务场景包括:供应商预付款(借方未清项)、员工备用金(借方未清项)、客户预收款(贷方未清项)和保险理赔(借方未清项)。系统通过表BSIS/BSAS跟踪未清项,支持明细追踪和账实核对。核心价值在于提供总账级别的明细管理能力,确保往来款项完整清账,简化对账流程,满足特殊业务管理需求。可通过FBL3N事务码查询和管理所有总账未清项。

金牌架构师 724

以太坊代币合约详析

以太坊代币 在以太坊系统中,存在作为基础货币的 Ether(以太),以及同样可以作为货币使用的 Token(代币)。 以太坊与其他加密货币的主要不同在于,以太坊不是单纯的货币,而是一个环境/平台。在这个平台上,任何人都可以利用区块链的技术,通过智能合约来构建自己的项目和DAPPS(去中心化应用)。 如果把以太坊理解成互联网,DAPPS则是在上面运行的网页。D...

1213

【目标追踪】python背景模型减除法原理及其实现

python基于背景模型差法的视频目标追踪帧差法的问题:背景模型差法目标追踪原理1. 基本思路:2. 图例讲解:3. 存在的问题&如何解决:4. 最终效果预览第一步——调用摄像头:1. 使用opencv打开视频or摄像头:2. 读取逐帧图片:第二步——处理图片:1. 转换成灰度图:3. 累加权重重构背景:3. 计算像素差:3. 使用中值滤波和膨胀腐蚀去噪:3.1 中值滤波:3.2 图像腐蚀...

梁瑛平的博客 1948

预测股票价格趋势:使用MATLAB进行股票价格预测

通过收集股票数据、数据预处理、构建预测模型以及可视化结果,我们可以利用MATLAB强大的计算和分析功能来预测股票价格的走势。然而,需要注意的是,股票市场具有高度复杂性和不确定性,预测结果仅供参考,并不构成投资建议。然而,借助计算机编程和数据分析工具,我们可以利用历史股价数据来建立模型,并预测未来的股票价格走势。首先,我们需要获取股票的历史价格数据。完成模型的拟合后,我们可以使用该模型来进行未来股票价格的预测。最后,我们可以使用MATLAB的绘图功能将预测的股票价格与实际股票价格进行对比,并进行可视化展示。

2301_79326588的博客 1018

什么是智能合约?

大家一直对智能合约很好奇,都说智能合约很强大,到底强大在什么地方呢?其实,通过这次的整理,我也是对智能合约的概念以及运行原理有了更深一层的了解,而对于智能合约为何如此强大这一问题还是一知半解,如果有对智能合约比较通透的大佬,能够指点迷津的话,真是感激不尽呢~~ 为了整理这些,我也是花尽了心思呀,如果有不妥之处,还望大家能够提出来,咱们一起讨论一下。 目录 一、什么是智...

zqq_2016的博客 4901

第54节:vue3+cesiumjs

对之前的vue2+cesiumjs 进行了升级

qq_29384639的博客 62

以太坊如何通过构建智能合约来销售商品?

如何通过构建以太坊智能合约来销售商品?这是个问题。 毫无疑问,比特币已经改变了我们看待和理解什么是金钱,价值以及最近由智能合约产生的所有权的方式。这很有趣,因为几乎每个人都听说过它或加密货币。来自许多业务领域的人,不仅仅是我们,IT工作者。 在本文中,我将展示我关于以太坊的第一份智能合约,这是我对区块链的个人研究的一部分。 区块链适合初学者 有许多涉及区块链技术的概念,但在本节中我将尝试解释这种...

mongo_node的专栏 510

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

如何通过以太坊构建智能合约来销售商品

如何通过构建以太坊智能合约来销售商品?这是个问题。 毫无疑问,比特币已经改变了我们看待和理解什么是金钱,价值以及最近由智能合约产生的所有权的方式。这很有趣,因为几乎每个人都听说过它或加密货币。来自许多业务领域的人,不仅仅是我们,IT工作者。 在本文中,我将展示我关于以太坊的第一份智能合约,这是我对区块链的个人研究的一部分。 区块链适合初学者 有许多涉及区块链技术的概念,但在本节中我将尝...

rejames的博客 977

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

一文读懂以太坊代币合约

本文首发自https://www.secpulse.com/archives/73696.html,转载请注明出处。 工欲善其事,必先利其器。要想挖掘和分析智能合约的漏洞,你必须要先学会看懂智能合约。而目前智能合约中有很大一部分是发行代币的,那什么是代币,他们有什么标准呢?本文就是带领你入门,教会你看懂一个代币的智能合约。 以太坊代币 在以太坊系统中,存在作为...

weixin_30908941的博客 704

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

智能合约没你想得那么智能!5分钟带你重新认识“智能”合约

假设有这样一个场景,Alice将房屋作为以太坊上不可替代的Token,通过原子交换,将房屋转租给Bob, Bob需要每月支付一定数量的比特币。有一个前提,Bob相信获得代...

区块链大本营 5704

V神说,解释以太坊2.0最好的文章就是这篇了

翻译 | 王国玺编辑 | 波波今天,V 神在 Twitter 上表示,君士坦丁堡升级的再度延迟完全不会影响以太坊 2.0 的 Casper/分片/宁静 的研发团队和研发进...

区块链大本营 6280

如何使用区块链币收款地址找合约地址?_区块链技术学习指引

本文原文链接本文为博客文章索引,小白必看。有新文章时会更新本文,建议大家加入收藏夹中,如果你觉得本站不错,欢迎你转发给朋友。引言给迷失在如何学习区块链技术的同学一个指引,区块链技术是随比特币诞生,因此要搞明白区块链技术,应该先了解下比特币。但区块链技术不单应用于比特币,还有非常多的现实应用场景,想做区块链应用开发,可进一步阅读以太坊系列。比特币如果你是还不知比特币是什么,那就看看比特币是什么基础入...

weixin_39605296的博客 2533
上一篇: 迟来的HTTP2简明教程
下一篇: 天下无难试之HashMap面试刁难大全
codehole_
博客等级 码龄7年 34粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值