00:00
我们整个这个APP里边可以说是最核心的一部分内容了,也就是关于拍卖,那这一部分内容可能就是稍微逻辑有一点复杂,所以说我们可能需要花比较多的时间跟大家先来介绍一下,就是整个我们想要做的这个拍卖到底是什一个什么样的事情。那大家可以首先先想象一下,就是呃,大家认为的拍卖是什么样的?应该就是一帮人坐在一个屋子里面对吧?就是一个人一个人在上面叫价,然后拿个小锤儿对吧?然后叫一次价,然后下面开始开始竞价举手。呃,这种拍卖呢,就是我们一般在电视上或者是大家印象当中看到这种拍卖,呃,应该是叫英式拍卖,它这种是一种公开竞价的拍卖方式,也就是说,呃,同样的一个东西大家都在一起,你看得到谁出价,而且他要叫的那个价呢,大家都知道,都能听得到,对吧?呃,然后你就可以就当面去调整自己策略,然后去想要去报多少价,这种拍卖方式最简单也最直接。
01:11
但是呢,他可能还是会有各种各样的问题,就比如说呃,那有些人呢,可能就会去去去恶意的去,呃跟别人去竞拍啊,那有些人呢,可能就是呃,因为你这种报价的机制,那你说就是我报了多少价,然后最后我就要就要按这个价去成交,所以很多竞拍的人可能就会偏于保守,就我可能就不想一下子叫那么高,对吧,正常来讲,所以这种呃,从商家的角度来讲,其实这种方式是不太适合他卖出去东西的,对吧,你总让别人有这种就是收着的感觉,然后呢,一不小心还会碰到这种恶意推高价格的这种人,就是呃,整个大家就会想到他的那个拍卖的结果,价格就会不太稳定,你碰到有两个这个特别特别较劲的人,然后彼此互相去抬价,那这一波可能拍卖的价格就非常非常高,那遇一波呢,那。
02:11
可能大家可能就都都都怂了,都不想去觉得跟跟你去竞价,最后反而会就是弄得这个大家都出价很高,所以他可能就就把这个价压得很低,最后成交,呃,自己反而会利益受损,所以说在这种状态下就有了另外一种拍卖模式,那这种拍卖模式就是现在E贝它真正的这个拍卖平台上在实行的这种方式,它是怎么样做的呢?我们看一下就是E贝里边它有几种不同的拍卖类型,有一种叫增量竞价,大家从四面就可以想象得到,这个叫什么呢?就相当于每一次竞价的时候,我们那个增加的那个额度都是一定的,对吧,每一次都都上一定的这个门槛,那还有另外一个是自动竞价,那我们现在其实主要讲的就是自动竞价,这种这种类型。
03:07
那比如说大家可以看一下这里列出来的这个自动竞价的案例,一个实例,比如说首先一个商品已经上架了之后,我们给它标定了一个起拍价格,比如说标定价格是十美元,那只要高于十美元,那大家其实这个竞价都是有效的,对吧,你可以随便去竞价去拍,所以大家可以看到接下来其实没有这一轮一轮的竞价方式,大家会发现大家都是自由去去直接去出价的,就没有像我们一起坐在一起,哎,现在我们是第一轮出价,呃,这个呃,十美元,第一次十美元,第二次没有,没有这种,因为大家想这个在电商的平台上面,你如果这样一轮一轮去叫价,那大家还都得守在旁边,对吧,这个看起来就不太靠谱,所以说E贝本身它用的更多的是这种自动竞价,比较自由的这种竞价方式,大家看到底是怎么样去竞价呢?
04:03
比如比如说有一个人爱ice丝,他一看这个起拍价是十美元,然后他就出了一个价,我出10.5美元,那这是一个有效的竞价,对吧,高于起拍价格嘛,所以这个时候如果没别人的话,他肯定就是当前拍卖这个最有利的竞争者啊,啊但当然这个10.5美元肯定不靠,就是不是很保险了,那比如说又有另外一个人Mary这个人看到,诶,现在有人出价10.5美元,那我就可以出价15美元。他出价15美元之后,比10.5美元高,那在这种模式下呢。这个时候爱丽丝就输了。啊,当然爱丽丝输掉之后,它之后还可以再再继续报价,对吧?那这个是另外一回事,那这个时候EBA显示的最高竞价当前的价格是多少呢?对,它显示的是10.75美元,这什么意思呢?E倍的规则是按照第二高竞价的那个竞价额度来,然后在上面加一个就是比较少的,相当于是每一次抬价的一个小的阶梯价格,那这里边是一个阶梯价格是一个0.25美元对吧,比较少,所以就是在10.5美元当前第二高进价基础上加。
05:21
一小部分增量。所以现在的价格就是10.75美元,但是呢,Mary的出价是15美元,并不是说就假如说它的这个10.75美元是什么意思,就是说当前如果就结束就拍下来的话,他的成交价就是10.75,那Mary是这个竞价成功者,他要支付的是10.75美元,这是这个规则,那接下来大家可以看到,就是比方说又有一个人撞这个约翰,他看到当前,诶当前你的这个,呃,E备显示的当前的成功交易成功价格,可以成功交易的价格是10.75美元,那我就想,那我就提高一点呗,我出12美元。
06:04
当他出12美元的时候,E贝Y会去自动判断,之前我曾经我现在判定好的竞价成功者是maryry,对吧的出价可不止12美元,他的出价是15美元,所以我默认你出价12美元的话,你已就输掉了,你还是不如marry出的那个价高,但是这个时候eBay会显示当前的第二高的竞拍价格是12美元。所以它会显示,如果这个时候Mary这个时候整个的这个拍卖结束了,对吧,那前面Mary他出价15美元,他赢了,他要支付的是多少呢?是第二高的竞拍价格,再加上一个小的增量,所以就变成了12.25美元,是这样的一个规则有点绕,对吧?所以啊,大家可以看,当然之后就是大家会看到之前出现的这个爱丽丝,他有可能还会再去。
07:03
进一步去竞价,那这一下如果他出了17美元的话,那他就赢了,那这个时候E贝就会认为最高的竞价是17美元,而第二包的竞价变成了刚才之前Mary的15美元,所以当前如果结束的话,艾ice斯会赢,Maryry就说了,那爱ice丝的出价是17美元,他要支付多少呢?支付第二包进价15美元,再加上一个小的增量0.25,所以他要支付的是15.25,呃,大家可以看到,最后说如果没有人再出价了,那爱丽丝。赢得拍卖,他要出的价是15.25美元,就他的本来出价报价是17,现在要出的是15.25。大家理一理这个逻辑啊,是稍微有点绕,对吧?这一套拍卖机制叫什么呢?大家看到啊,下面这个就说了,这叫victory auction,就是叫维氏拍卖。
08:03
这是另外一种,就是常见的一种拍卖规则,呃,他为什么会。会有这么一套规则出来呢?那其实大家可以想到,首先这个过程当中,其实它是按标的,就为什么把这里叫暗标拍卖呢?就是在这个过程当中,E贝只显示出来就是当前如果要成交的话是多少多少钱,但事实上没有人知道。是谁能赢得,就是这是谁的书价,谁能赢得这个拍卖,而且也不知道这个人他真正的给出的那个竞拍价格,他的筹码,他的底线是多少,对吧?所以整个过程其实是按标的,你并不知道别人的状态是什么样子,那这个有有一个什么好处呢?一个是可以有一个隐私保护,对吧?另外一个就是在你不知道别人怎么样出价,你不知道别人是一个什么样心理的情况下,你自己的出价应该是怎么样的呢?那可能你就会更加的去衡量自己的心理价位,对吧?我觉得他这个东西值多少钱,我就出多少钱,所以这种情况下更容易出到自己的心理价位。
09:14
那还有另外一种方式,就是它为什么是选取第二高的竞价呢?这种有也有一种就是名字叫管这个叫呃第二高竞价,呃这种拍卖是是这样的一种模式,为什么选取第二高竞价不选最高竞价呢?啊这就是意意思就是说你可以放心的出价,对吧,你最后的出价不是说你给要拍多少钱,放在这里,我就最后一定要收你这么多钱,而是说你的这个竞拍,拍在这里的这个竞拍价只是代表你的一个诚意,你如果真的想要这个东西的话,你大可以比别人出价很很多很多对吧,那只要没有别人。愿意出跟你匹配这么高的价的话,也就是他都不愿意出跟你差不多的价的话,那其实你最后的成交价要比这个低很多,对吧,所以在这这个某种意义上也是解放了这个,呃,竞拍人想要买家,买家他心里边的这种顾虑,对吧,你可以放开你去给高价,你诚心买你就给就可以了啊,所以这种某种意义上也是卖家更有可能能卖出符合自己预期的一个价格,对吧,所以说呃,易备上主要是用的这样的一种方式,但是大家可以看到就是在这样的一个例子里边呢,我们如果放到以太坊里边,放到区块链系统里边来。
10:38
其实就会有问题了。为什么会有问题呢?大家可以想到,在这个易备的处理过程当中,他是怎么样的呢?他是每个人先把自己要,就是自己的拍卖价,竞拍价。肯定就是直接输进去,在eBay的系统里边,对吧,网页上输进去,然后点击提交。
11:01
就传给eBay了,EBay会把这个数据存起来,但是不会把这个东西公开给所有人看,对吧?所以这是一个按标的拍卖,别人不知道刚才的爱丽丝什么Mary他们出价是多少。但是呢,如果放在以太坊上面,我们去提交一个竞拍价。然后让以太坊把这个东西存在我们的区块链里边,那这个是不是所有人都能看得到啊,因为这是区块链的特点,对吧,你你只要是存在上面的,所有人都是看得到的,那在这种模式下,那其实就不是易备的这种暗标拍卖了,那就变成一个公开公开拍卖了,对吧?只不过不像我们大家坐在一起,是一轮一轮的,100万第一次100万第二次,那只不过就是说大家可以同时出价,然后我可以看到当前所有人他出的价是多少,然后我就可以啊,你出了这个100块,我我出101块对吧,我我总总压着这个点去,去压你一头就可以,所以在eBay的模式里边,他是不希望出现这种情况的,你就按着自己的心理价位去拍就好了,你不要去管别人出价多少。
12:11
啊,所以。在这种这种状态下,大家可以想到我们如果想要实现eBay的这种按标竞拍的话。那在以太坊上就不能简单的直接提交一个竞价就把它存在上面,对吧,那我们应该怎么办呢?啊,大家可以看到,在我们这里呢,为了解决这个问题,就要用一个稍微不同于我们前面讲到这个维氏拍卖的一个模式,我们会怎么样呢?我们在出价的时候提交一个经过加密的竞价,所以说我们还要处理一道,就是相当于是需要把这个竞拍的价格做一个加密。然后存到以太坊系统当中去,然后等到拍卖结束的时候,所有人再次按照。
13:04
自己之前的那个出价,然后做一个揭示的操作,所以是相当于分成两步,就是说我们之前。正常拍卖的过程当中,大家发起一个交易,提到以太网上去,表示我要拍这个产品,然后我给给另一个出价,这个出价是我加密的,这个加密之后的东西大家都能看得到,这个是存正在以太坊上的,但是没有人知道你到底我的出价是多少。那最后呢,等到拍卖结束之后,我又有一个流程是我要再提起一一笔交易,然后表示我要揭示我的出价,所以我要把之前加密的信息相当相当于解开,对吧?那只有我知道怎么样去解,所以我们的合约去会做校验,看是不是能解开当时的那个出价,然后解开之后呢。那大家就会看到我们的智智能合约里边,就会把每个人的报价做一个比对,然后去筛选出谁是最高价,谁赢得了拍卖,然后谁是第二高价,赢得拍卖的那个人需要按照第二高价去支付,对吧,整个这个流程就走完了。
14:14
所以大家会看到就是在我们的这个应用里边的啊,就是我们的这个流程跟前面介绍的维氏拍卖又有一点不同,可以说似乎比维氏拍卖又稍微的多了一个步骤,对吧,还稍微复杂了一点,这种拍卖的形式啊,就跟在以太坊上一个著名的应用,这里说的ens,就是域名服务的这个应用非常的类似,域名服务它也是一个拍卖的一个过程。所以他的拍卖用的就是我们前面介绍的这样的一个过程,就是先去拍,然后加密之后,呃,加密啊,给的是拍卖的时候给的是加密之后的那个出价,然后拍卖结束之后,就是到了截止时间之后,每个人再去揭示自己的出价,这样的一个过程。那另外一个不一样的地方,大家注意,就是说在EBA里边呢,我们提交的是你就是真正竞拍竞价的那个金额,对吧,但并不是你实际支付的那个金额,你是等到竞拍成功之后才去支付的,这是正常的拍卖流程嘛,对吧,你先去报价,先竞价,然后去支付,但是以太坊上不一样,以太坊上要求的是。
15:32
我们在做竞拍的时候就要发送仪态。因为你如果要是直接每个人都可以随便去,就是提,就是报一个价,就就说我要拍这个数的话,那其实到最后我们的合约其实是没有约束的,对吧,他不给你打以太,你是没有办法。所以在这个过程当中,为了避免出现这种不必要的这种流拍的现象,所以我们尽可能的要保证用户先提交资金,大家能想到这个过程对吧?因为你是我们实际拍卖的时候,我有各种各样的对你账号的限制呀,对你呃,就是包括大家这种实际竞拍的时候,你人就在这里对吧,你这个大家不会担心说你先提交了这个竞拍价格之后,之后又反悔,你不给钱,没有这种担心,包括在电商上面也是,你如果不给钱的话,那其实你的账号各种各样的东西都会受到限制,都会被处理,但是在我们的智能合约里边,每个人的账号就是一个地址啊,这个我们都是匿名的,对不对?这个过程当中保护了匿名性,那就代表我可以无限的申请账号,大家也会发现我们这个申请账号不要太容易对吧,只有自己在GA里边随便去,呃person.new account就生成一个账号,那这个完全没有成本的,那别人。
16:52
你如果要没有门槛的话,我就随便生成一个,我就给你给你去去恶意竞拍对吧,那你这个网站根本就没法玩了,你最后所有的产品都留拍,拍下来的人价格很高,最后不支付,那这个就没法玩了,因为我们的智能合约没有办法强制说你竞拍结束之后给我转账,没有这个功能,对吧?所以那我们怎么解决呢?那一定就是一开始你要给押金,相当于,所以就是说大家会看到我们的要求是你出价的时候,想要去竞拍的时候,一方面把你想要的竞拍的金额加密传到我们的合约里面,另外一方面竞价的时候你就得给合约里边打一台。
17:35
这就相当于是押金,他甚至不是押金,就是最后你提交。你真正竞拍成功之后,你要付的钱就都从这里扣。啊,所以在这种规则下呢,我们要求就是什么呢?就是你正常来讲提交同时打打的这个以态不能比你的。就是想要竞拍的那个价格少对吧,要不然的话,你这个肯定就竞拍失败了。
18:03
所以我们到时候会处理各种各样的这种情形,大家就会想到这里边就有好几种情形了,就是那我们看看一下这个例子吧,还是刚才的这个这个什么爱ice Mary的这个例子啊,首先我们看一下爱ice丝一开始起价十美元,然后他出价10.5美元,那么我们的这一套拍卖系统应该怎么去运作呢?我们首先应该让爱丽丝点一个按钮,我们的前端页面对吧,点一个按钮说我要报价,那他肯定会输入自己的要报的这个10.5,然后我们还要要求他给这个定一个密码。做一个加密。我们把这两个加密之后的东西传给后台以太坊里边的合约。然后我们的合约会做什么事情呢?啊,大家可以看到,就是我们比如说我们直接做一个SS3这样的一个哈希,对吧,那就相当于是把它做了一个加密对不对。
19:09
因为我们产生的这个哈希,没人能碰撞的出来它原始的那个东西,对吧,所以可以认为这就是一个加密之后的字符串,那他会把这样的一个字符串发到我们的以太坊上。然后同时。给合约发送,比如说他发送15美元的ETH,价值15美元ETH啊,就是我们这里只是比个例子。那看到这笔交易的人,大家就会发现,诶,我看到有人一个账号一个地址提了一笔交易,发到了我们这个合约上面,他报价了。他具体报了多少呢?我们不知道,我们只知道它伴随着这个报价转了15美元的ETH,那这个是看得到的,对吧,但是没有人知道他到底这个报价报的是多少。它实际上它这里只报了10.5,对吧,你如果照着这个15去看的话,其实是没用的,好那么接下来大家看啊,这种情况下,Mary他不知道爱丽丝出价是10.5,那么他只知道,诶,他这个发送的这个过程当中,他发了15,那他就想我要赢这个报价的话,我就想出15。
20:22
我就觉得爱丽丝有可能是出的15对吧,我就出15,那么他就把15和他的这个加密的这个字符串做一个哈希,这样得到这个字符串,然后连同15美元的ET发给我们对应的合约去。那他也就提交了一个报价对吧,那这个时候类似的就是每个人都可以这样去报价,大家在以太网上看到的交易是什么样的呢?就是每个人都可以看到一个加密之后的提交到合约里边的一笔报价,那不知道他真正报价报了多少,但是可以看到Mary连同这个报价给了15美元的ETH Alice也给了15美元的ETH,但是你并不知道他们俩实际报价是。
21:09
我们这里以上帝视角来看的话,知道Alice丝报价是10.5对吧,Mary报价是15,好,那么接下来啊,大家就可以看到了,就是说那这种情况下,那别人不是一看你转了15。美元的ET就知道你报价肯定就不会超过15嘛,不是我们系统里面可以处理这种情况的,你也可以迷惑别人,我转15美元,但是其实我报价是一个。就是我报的价格其实很高。啊,但当然了,这个价格最后是会发现就是无效的,对吧,因为你报的价格过高,然后你给的以太又不够,所以说这种情况是是无效的,但是在这种情况下,其实你是可以迷惑别人的,对吧,你就相当于我发一个比方说十美元,然后你还以为他可能报价就是十美元的,但事实上他只是报了一个无效的一个价格而已,所以这是有各种这种迷惑别人的手段,所以说你参考别人的这这个发送金额的意义,其实参考价值也有限,你还是得去根据自己的判断来去发,对吧?所以他的目的就是这样,你不要看别人,不要管别人是怎么样的,你按照你自己的心理价位去给,好呃,那么接下来大家可以看到,就是说,那假如还有另外第三个人约翰这个人他看到目前出价是10.75美元,他又出了12美元的话,呃,那他就相当于要发送的是什么呢?那你就发送一个12加上。
22:40
一个自己的加密的子符串,然后发给到合约里面去,然后附带价值12美元的仪态,对吧,就是这样的一个过程,好,那所以,呃,当然了,最后这个也是一样,那如果要是爱ice丝还要再出价一次的话,那应该还可以,对不对,尽管之前的那个价格他还不太清楚,但是他如果已经看到,诶也有人出价出就是连通的那个以泰给了15美元,他如果真的很想要这个东西的话,那他他可能觉得那我之前出的那个10.25可能不太靠谱,可能拿不下来,那我再出一个17,这也是完全可以的,所以我们允许一个人出价多次,只要这个商品还在拍卖的窗口期内。
23:21
这是这样一个逻辑,好,那接下来我们知道了这个拍卖的竞拍的逻辑,对吧,这是,然后我们就要说另外一个过程,你前面说了他们竞拍了,那怎么样,其实还有另外一个过程,就是你怎么样知道谁拍卖赢了呢?然后他按照什么样的价格去付呢?那我们这里边就是有一个环节叫揭示报价。这个环节是什么呢?就是拍卖结束之后。每个出价人必须再发起一个交易,发起一个操作,这个操作就是揭示自己的报价,所以揭示报价的时候,我们知道竞拍的时候他给了一个数,然后是加密之后的,对吧?做了上三运算,那揭示报价的时候,他就应该要把它真正竞拍的那个金额和他的密码直接发给合约。
24:14
当然这个密码就是就是这一次有用对吧,所以你不要用自己的通用密码,把自己银行银行卡账号,或者说自己什么关键的邮箱密码都都发进去,对吧,你自己就是肯定就是就这一次用,那大家会发现这样得到的这一个这两个字符串,一个金额,一个加密的密钥密码。拿到这两个之后,我们的合约是不是也可以通过一个同样的S3的算法做一个计算,然后就应该理论上就能拿到,当时他发过来同样的那个字符串哈希对不对,所以这个时候我们就可以去数据库里面比对,找到当时他出价的那个那个金额,如果比对之后一样好,那就没问题,这就是一个有效的出价。
25:04
如果比对之后,诶找不到,或者说你这个。解出来之后发现你当时给的那个以太根本就不够,那我会认为当前的这个出价是一个无效的出价,对吧?啊,所以这就是我们在以太坊上怎么样处理他之前竞价报出来的这个竞价是一个加密的状态这样一个事情,我们之后再让他发一个揭示报价的交易,把它解密出来,好,那么接下来我们还是回到之前的例子来看一看我们在这个合约里边到底应该怎么样工作啊,就是一步一步来,首先我们看就是爱丽丝这个人,他之前不是10.5美元吗?那么他揭示报价的时候给合约发送什么样的信息呢?就是发送10.5这个数据,还有一个他自己的那个加密的字符串secret string。然后我们的合约就根据之前的那个沙三把它放进去生成一个哈西对吧,那大家可以看到在这个例子里边,就应该跟他之前生成的这个是一样的,那么大家会发现我们在数据库里边去查,查到对应这个哈希,它对应的当时提交的那个报价。
26:17
当时给了15美元的以太,然后他现在说他的这个接他给的报价实际是10.5美元,比这个小,所以有效,然后合约做什么事情呢?把多出来的4.5美元的ETH直接返给爱丽斯啊,所以这个过程当中是你真实的这个要报价的这个10.5美元我就已经扣在这儿了,对吧,如果最后就是你赢得的话,那你这个就得扣了。那你至于你多给的那些报价,当时多发出来的东西直接就给你扣,直接给你返回去,所以说你不要担心多报价好,那接下来那还有Mary Mary也是用同样的方式去揭示,他发送的是15和他的那个密钥,对吧,然后呢,生成的那个哈希,我们合约里边一看查到了,然后发现他当时也是给了15美元的ETH,然后他的报价是15,那我们一看一比较,当前的最高报价是Alice的10.5,那Mary这个报价15更高,对吧。
27:19
所以就顶替掉,当之前的那个10.5 10.5就变成了当前的第二高报价,然后15就变成了当前赢得竞拍的最高报价,对吧?然后那么呃,他的这个当时给的以太也是价值15美元,那这个一减是零,那就没有返回对不对,所以这部分就全锁定在合约里面,好,那接下来大家会看到,那还有那个约翰呢,他出价是12美元,12美元,那么他一揭市的时候,合约一看,诶,你12比我当前的15美元要低对不对,你根本就没有我当前的这个竞拍价格高,所以说我就会直接认为你竞拍失败,这12美元就都会打回给直接返回给约翰,因为这个他肯定不会赢得竞拍了,对不对,但是这里大家注意。
28:11
啊,这里其实写的有问题啊,因为如果约翰是出12美元的话,他对他尽管不如最高价高,但其实他这个报价是第二高价对不对?所以这个时候其实应该是把它写到第二高的竞价里面去,那所以最后如果这个时候结束的话,那Mary就会赢得竞价,那应该是支付12美元,对吧?这里写错了,回头我改一下。所以大家要注意,就是这是我们整个这个合约处理的一个逻辑。
我来说两句