区块链研究实验室-汽车共享权益智能合约开发教程(下)

分配所有者

区块链研究实验室-汽车共享权益智能合约开发教程(下)_第1张图片

setOwners函数接收一组地址,使其成为汽车的所有者。 调用此功能后,汽车将拥有一个或多个车主,这些车主将分享相同的汽车共享。

这个功能是由carSigner调用的,我还不知道它是否最佳,但我们假设这是在经销商处设置的。 所以,正如你现在必须想到的那样,系统的很大一部分仍然需要大量的人机交互和协调。 在这种情况下,经销商将负责让这些所有者支付他们的部分交易,然后让汽车注册其全新的所有者。 我想经销商处的那个人使用他的密码来解锁汽车中的某种界面,这将促使它在智能合约上执行此功能。

租车天日

区块链研究实验室-汽车共享权益智能合约开发教程(下)_第2张图片

一旦获得汽车,它就可以使用了。现在我们只实施一个租赁选项:任何人都可以在当天租用它,支付1个eth。

这个功能基本上做的是设置它的新状态(作为当天的租赁驱动)并注册谁租用它,在什么时间和何时应该返回它。此外,我们将收到的以太币添加到合同的内部余额中,因此它知道应该在以后分配给业主多少钱。

再一次,这里有很多假设。想象租用汽车的人使用他的支持web3的浏览器来访问dapp来执行这个功能。但是汽车怎么知道开车的人就是这个人。好吧,我们可以让这个功能生成一个带有PIN码的收据,并在有人试图启动时让汽车提示输入PIN码。另一种解决方案可能是当有人试图驾驶它时让汽车提示付款,但这需要高度信任,因为驾驶员必须使用他的私钥在相当公开的设备中签署交易。这将是一个非常冒险的主张...我不会尝试从公共图书馆的电脑访问我的家庭银行,为什么我会在“公共”汽车中解锁我的以太坊帐户?

区块链研究实验室-汽车共享权益智能合约开发教程(下)_第3张图片

这是一个非常简单的解决方案。 假设每次他试图启动汽车时汽车都会提示用户输入他的地址。 它会检查输入的地址是否与租车相同。 简单但不是最理想的。 首先,任何人都可以扫描最新的交易,以了解谁租了它并使用他的地址“窃取”他们的租金 - 尽管这可以通过散列地址来减轻。 其次,这是一个糟糕的用户体验! 想象一下,必须在汽车触摸屏中输入42个字符才能每次启动汽车。

归还汽车并分配收益

区块链研究实验室-汽车共享权益智能合约开发教程(下)_第4张图片

一旦客户完成了汽车,他可以通过调用此功能返回它。这将基本结束租赁期,让其他人再次租车,并将收益分配给业主。如果24小时过去且司机没有完成,汽车本身可以结束租赁期。为了实现这一点,该汽车必须在内部安排此功能调用,因为目前无法安排合同功能。

请注意,我们没有做任何事情来惩罚司机没有及时归还汽车,但可以做一些事情,比如事先要求保修金并在托管中保留,直到汽车归还。如果他们在24小时租赁期结束后将车辆归还,则可能会收取额外费用。

此外,我们没有考虑汽车租用时的燃油水平。驾驶员是否应该像租车时一样归还汽车?他应该为燃油差价收取更多费用吗? - 如果天然气价格为50%,他们甚至可以退款,他们还能以75%的价格退货吗?

区块链研究实验室-汽车共享权益智能合约开发教程(下)_第5张图片

一旦汽车退回,它将计算并将钱分配给每个汽车股东。 在分配资金之前,它必须保留一些钱来支付自己的费用。

目前我们正在考虑汽车用户必须支付的燃气费用,以便全天拨打每一个功能。 汽车每次交易都要花费一些汽油,汽车签名是大多数情况下支付的汽车,所以它应该有一个以太的分配,以便汽车能够正常运转。

在这里,我们还可以计算消耗的燃料以及汽车在此行程中必须支付的其他费用。  - 通行费,公共停车场等 - 并在将余额分配给业主之前保留这笔钱。

提取资金

区块链研究实验室-汽车共享权益智能合约开发教程(下)_第6张图片

最后,在任何时候,每个所有者都可以执行此功能以撤回他们所欠的任何未结余额。

 

对于这份合同做出很多改进,很难弄清楚从哪里开始。我提出了一些问题,并在代码中指出了几个可能存在改进空间的地方,例如:

 

  • 有没有更好的方法来构建这个而不是让汽车执行交易?如何安全地设置汽车节点。制造商应该这样做吗?还是经销商?

  • 我们没有使用carValue。我们应该允许车主出售他们的汽车份额吗?我们应该使用carValue还是所有者可以设定他的要价?任何人都可以随时出售他的汽车份额吗?是否应该进行投票?有人可以买吗?

  • 我们没有考虑有人可以购买更大份额的汽车。现在每个人都拥有相同的所有权百分比,我们假设所有人都在经销商处支付了相同的金额。 - 好吧,我们还假设一个经销商准备让多个人以货币购买汽车的一部分,并以某种方式无缝地转换为这种链上情景;因此,这可以以不同的方式完成,并不一定每个车主都应该拥有相同的汽车。这也会影响收益分配和支出。

  • 现在我们假设汽车是空闲的,任何人都可以来当天租用它(或者所有者使用它,或者让它适用于优步,尽管这些功能尚未实施)。但汽车应该如何决定应该做什么?是否允许某人在今天租用它而不询问业主今天是否需要它?如果有几个车主表示需要使用这款车,那么如何决定谁优先使用?如果汽车仅用于租车,它如何决定何时最适合优步工作或当天租用或作为出租车工作?

  • 如果车辆退回,如果在24小时内没有退回,我们不会采取行动。如果租赁期结束并且司机还没有退回车,会发生什么。汽车应该停止工作吗?它应该促使司机进行新的付款吗?我们是否应该在租赁前要求保修并将资金存入托管?我们是否应该将驾驶员列入黑名单,以便他们不允许租用这辆车(或网络中的任何其他车辆)?

  • 汽车内部数据:合同至少需要知道汽车是否需要加油。什么是汽车沟通的最有效方式?我们假设汽车拥有各种传感器,可以让它获取这些数据,然后将这些数据转发给智能合约。

  • 我们分配所有者的方式不是最理想的。首先,我们可以拥有另一个实体,例如汽车经销商,在收到货款后,有权在汽车智能合约上调用此功能来注册所有者。其次,在这个例子中,我们允许车主在购买汽车时只设置一次。如何让当前的老板买另一个?如果我们希望其他人以后成为该车的车主怎么办?第三,这部分是因为我们不允许车主拥有比其他车更多的车辆,如果我们有3个车主他们每辆车获得33%的车,剩下的1%由车主持有汽车本身,我们该怎么做?

  • 最后,到目前为止,由于没有用来计算收益分配,所以有人拥有多少汽车并不重要。还有一件事,也许我们甚至不必分配汽车根据所有权赚取的钱。

 

正如你所看到的,这篇文章提出了许多我尚未得到答案的问题,但我希望它开始讨论以太坊区块链应该如何与物联网项目进行互动以及其他更好的方式。

你可能感兴趣的:(区块链,智能合约,以太坊,区块链技术,Hyperledger)