00:00
就是这个托管合约的主体内容其实都已经完成了,对吧,然后在这个合约里边呢,大家还看到还有两个这个get函数,我们再简单的一起来过一下,把它写进去啊好,那么诶,这鼠标飘的厉害啊好呃,那么大家会看到我们现在在这个合约里边已经定义了finalize,那么下边我们同样,呃,我们知道就是对应的这个托管合约账户,它的一些信息我们肯定是得拿出来的,对不对。我们现在的整个设计的模式是在这个合约里边去创建合约,创建托管合约,所以相当于托管合约的地址全部都在我们这个合约里面,主合约里边去控制,去存储,那么我们如果要想去查托管合约的信息,是不是也得通过我们主合约去查,要不然我们在外面都不知道它地址是什么,对吧?所以我们这里比方说去查一个叫做as pro info吧,应该有这样一个asce pro INF,这个asce pro不太好拼啊。
01:11
那大家就会想到这个要传的是不是也是一个product ID,是这样对吧?好,那么接下来这就应该是一个public信号干扰是吧?好。那么大家会想到我们这是一个get,就是只是拿这些信息,当然就是VI类型对不对?呃,就是它的这个整个函数的这个状态是real类型,然后will returns,这就拿什么东西了,对吧?大家会想到我们想拿什么东西呢?呃,那等一会儿我们在底下定义好了之后再说,对吧,好,Return return,那么我们现在是不是就要从asc里面去拿了。是不是,那么大家就会注意我们这里边需要拿到的东西是不是应该在product。
02:06
我们是不是定义了这样一个map去存储啊。Product pro对吧,它里边的mapping就是从product ID到我们的合约地址的一个映射,对不对,但是大家注意这里拿出来的是一个地址,对吧。这是不是地址啊。那我们如果要想调用这个as infer as pro这个合约里边的信息的时候,我们是不是还得拿到本身的这个合约对象?所以我们的做法是什么呢?大家看啊。然后起来。这代表什么?Astro在我们这里面是什么?这是一个合约对象对不对?前面我们定义的时候是不是也用了as pro关键词,我们只要import进来了,这一个as pro的源码,我们相当于是不是在这个文件里面就有了一个contract as pro,然后整个一个合约对象,所以我们下边就可以用这个合约对象了,对不对?所以前边我们是定义了一个它的合约对象啊,然后用了一个S,对吧,这就调用了它的constructor方法,那下我们直接把一个地址,以太坊地址。
03:28
给到这个as括号括起来,这代表什么呢?代表强制类型转换,我们就是认为这个地址就是一个astro类型的合约,对不对,所以我们相当于就把一个以太坊地址转成了一个在so里边可以用的as pro对象啊,所以这就是我们的这里的这个S对象就拿到了,对吧?就这种方式很简单对吧,我们不需要再去部署了,直接拿到就可以。
04:01
那接下来大家是不是就发现我们可以调Q里面的方法了,对吧?点什么函数我们都可以看,那as里边我们也定义了这个geter吗?诶,Q里面好像我们没有定义get对吧?那我们多定义一下吧,我们看一下这个as里边是不是也得定义一个东西啊,比方说我们定义一个function。呃,我们定义个什么呢?对诶,我们定义一个比方说as这个小写吧,啊,As pro infer定义一个这样的方法,这样的函数是不是就应该可以返回我们所有的,就是前面定义好的那个as pro的信息啊,啊,所以这是我们这个想到的,可能需要有这样的一个方法,对吧?那么它是它不需要参数get嘛,对吧,Public view get都是这种这种定义对吧,Returns,然后呢,大家会想到我们这个return什么东西呢?那你还是等一下再说吧,现在一下想不到对吧。
05:02
在这里定义好return,然后我们就想要return什么,就在这里定义了,对吧,那这里return return什么呢?是不是就是我们这里有什么信息return什么呀,对吧,就是product ID sell by abi amount,其实主要就这几个东西,对吧?那另外大家可能想到我可能是不是还需要知道我当前的这个它这个释放的状态对不对,那我可能需要。他是否已经释放了呢?把fund子disper返回去,然后当前有几个人已经同意解锁这个账户呢?我们release count和refund count也返回回回去,对吧?这是我们能够想到的,好,那么我们就这么写就可以了。好,那在这里大家就想到我们首先product ID还用返回吗?大家会发现我们这里边是不是查它的时候就要用product ID去查啊,当然大家也可以冗余一下把它返回,但其实没有必要,对吧?所以我们这里最关心的其实就是cell。
06:08
拜尔@对吧,其实就是这么几个对象。然后我们会记得我们要把放子叫什么disperst,对吧,Disperst这个别拼错了啊,放dispers就是当前是否已经是呃,是否已经把这个资金释放出去的这个状态要返回去,然后另外就是想到我们有release和。和这个REFUND2个计数器,对吧,把这两个计数器返回回去,Release和fund,好,那么前面我们定义的这就可以写了,对吧,是不是这都是address。Address,继续address,那后面的这就是一个布尔了,对吧?然后再往后这两个应该都是u int,对不对?好,我们这里就实现了一个as pro infer啊,当然我们可以直接,假如我们部署了这样一个as as pro的这个合约的话,我们可以在外面直接调这个方法,但是我们部署的过程当中是用这个store去部署的,对吧?那这个过程当中它的地址就是直接存在我们这个地,就是呃,这里的状态变量里面的,我们在外界没有办法去直接去访问啊,当然大家也可以把那个专门拿出来再去访问,但那个就麻烦多了,对吧?我们从这里去调不就完了吗?所以我们这里点什么?
07:43
点in对不对。诶,这个应该注明没什么关系啊,这应该是可以的,对吧,我们可以这么去调,所以这个调用的时候,我们其实就不需要有任何的这个函数了,对吧?呃,函数参数了对吧。
08:01
直接as in就可以了,那它的这个返回值是什么呢?这里有returns吗?这个returns应该是什么?大家会发现这里返回的是这个函数调用的结果,对不对,这个函数调用结果是不是就是这篇的这个结果啊,所以我们把这个复制过去对吧?所以跟它的返回是一样的,好,那么我们现在就实现了这个get函数,这里应该没有错误了,对吧?好,我们再看看这个我们的课件合约里边还缺什么。哦,这里边大家是会发现真的是有可能我们是想要知道他的这个地址在哪里的,对吧,那我们也应该公布出来,你要是真的想去查的话,也可以自己去查,对不对,对吧,直接在以财网上去查,所以这里边是还有一个这样的一个定义,就是ss pro address for product,那就是传进去一个product ID,我返回它的那个address对吧,那这个这个就更直观一点,这个我们就直接放在上面吧,跟它一样,Function as pro address for product,那这个返回的是就是传入的是一个product ID啊,这个就很简单啊,Public will,然后returns returns一个什么呢?Address对不对?好,那么我们这里直接return return什么东西是不是就是在我们product as pro这个mapping里边是不是就存了它的对应的对应的。
09:42
啊啊,直接我们把这个返回就完了,对吧?所以这个非常简单,大家把这个基本的两个get再实现一下,我们就完成了,我们现在这一个呃,就是e com store里边跟这个as pro,我们托管账户的创建和它的交互这一部分我们就搞定了,现在我们就都顺起来了,我们一点按钮的时候,我们要调1COM store里边的finalize option这个函数,调了它之后呢,我们就会创建一个对应的托管账户托管托管合约对吧?然后这个合约有一个地址,就相当于是我们,呃,就是这个存我们当前以态的这个地址对吧?然后这就相当于我们的一个一个这种多重签名的一个钱包了,对吧,多重签名的一个地址了,然后这个地方我们存完了之后,要更改这个product相关的状态,还要把多余的钱返回到我们的这个买家,对吧。
10:42
他支付的只是第二高价。然后呢,我们还要提供一些查询的方法,查询的方法我们这里边就直接调用XS pro里边的查询方法,对吧?我们拿到它地址之后,把它做一个强制类型转换,就拿到了对相对应的那个合约对象,然后我们直接调pro info就可以返回我们想要的信息。
11:05
啊,所以大家再把这个过程再去梳理一下。
我来说两句