CN112598466B - 一种基于联盟链的农机自助付费租赁方法 - Google Patents

一种基于联盟链的农机自助付费租赁方法 Download PDF

Info

Publication number
CN112598466B
CN112598466B CN202011535093.XA CN202011535093A CN112598466B CN 112598466 B CN112598466 B CN 112598466B CN 202011535093 A CN202011535093 A CN 202011535093A CN 112598466 B CN112598466 B CN 112598466B
Authority
CN
China
Prior art keywords
agricultural machinery
account
return
lease
function
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011535093.XA
Other languages
English (en)
Other versions
CN112598466A (zh
Inventor
吕滢
卞立平
罗智彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Zhimai Information Technology Co ltd
Original Assignee
Nanjing Zhimai Information Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Zhimai Information Technology Co ltd filed Critical Nanjing Zhimai Information Technology Co ltd
Priority to CN202011535093.XA priority Critical patent/CN112598466B/zh
Publication of CN112598466A publication Critical patent/CN112598466A/zh
Application granted granted Critical
Publication of CN112598466B publication Critical patent/CN112598466B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0645Rental transactions; Leasing transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F17/00Coin-freed apparatus for hiring articles; Coin-freed facilities or services
    • G07F17/0042Coin-freed apparatus for hiring articles; Coin-freed facilities or services for hiring of objects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0876Network architectures or network communication protocols for network security for authentication of entities based on the identity of the terminal or configuration, e.g. MAC address, hardware or software configuration or device fingerprint

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Finance (AREA)
  • Computing Systems (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Power Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开一种基于联盟链的农机自助付费租赁方法,包含以下部分:(1)基于联盟链FISCO BCOS架构节点共识机制的账户管理,(2)Solidity智能合约设计、编译和部署,(3)农机租赁信息上链并智能验证和预警。本发明通过联盟链的共识机制属性对权限进行自动化管理,更严格精确,不会被人为篡改;联盟链的区块时间戳可以帮助快速定位需要查找的农机租赁信息数据;农机租赁信息数据一经上链存证无法被人为修改,数据更安全诚信可靠;在不影响数据上链效率的情况下,拓宽了单次数据上链的业务应用层次,实现了自动验证和预警行为。

Description

一种基于联盟链的农机自助付费租赁方法
技术领域
本发明涉及一种基于联盟链的农机自助付费租赁方法,尤其涉及的是(1)基于联盟链FISCO BCOS架构节点共识机制的账户管理,(2)Solidity智能合约设计、编译和部署,(3)农机租赁信息上链并智能验证和预警。
背景技术
目前,市场上现有的农机自助租赁系统与方法,大部分只是单纯地完成农机预约和归还的过程管理,无法做到租赁记录可信存证、信用黑名单、避免掮客分成、租赁信息实时监管、区域性农机综合化治理等高级管理功能。
发明内容
发明目的:针对现有技术中存在的问题与不足,本发明提供一种可保障信用信息诚信度、数据安全不易被篡改、可实现高效检索数据、可自动化实现分权限治理的、基于FISCO BCOS联盟链架构的农机自助付费租赁的实现方法。
本发明基于FISCO BCOS联盟链架构,对农机自助租赁系统的出借方、租赁方、监管方的账号管理模式进行设计,对控制租赁业务模式的Solidity智能合约进行设计,并将租赁记录和信用分数据上链存证并实现智能验证和报警。
本发明所涉及的发明内容,有效解决了以下农机自助租赁的信息管理、信用管理痛点:(1)农机租赁信息和信用信息无法做到一经存储不被人为篡改;(2)监管方较难在某一地区范围实现对多家企业的农机租赁信息数据,实现自动的、严格的分权限治理和数据查询;(3)较难避免掮客转租、冒名租赁的不诚信行为。
同时,本发明所涉及的发明内容,具有以下技术优势:(1)通过联盟链的共识机制属性对权限进行自动化管理,更严格精确,不会被人为篡改;(2)联盟链的区块时间戳可以帮助快速定位需要查找的农机租赁信息数据;(3)农机租赁信息数据一经上链存证无法被人为修改,数据更安全诚信可靠;(4)在不影响数据上链效率的情况下,拓宽了单次数据上链的业务应用层次,实现了自动验证和预警行为。
技术方案:一种基于联盟链的农机自助付费租赁方法,包含以下部分:(1)基于联盟链FISCO BCOS架构节点共识机制的账户管理,(2)Solidity智能合约设计、编译和部署,(3)农机租赁信息上链并智能验证和预警。
实现基于联盟链FISCO BCOS架构节点共识机制的账户管理,包括如下步骤:
步骤101,将节点按权限等级设定分为3种类型:“平台监管节点”、“出借农机企业节点”和“普通节点”。通过根证书CA签发的R证书,在服务器注册进入联盟链中时,标定单个服务器将成为的节点类型。
步骤102,通过根证书CA签发的SDK证书允许“监管账号”、“出借农机企业账号”和“普通账号”这3类账号,分别准入联盟链并挂靠在步骤101中所述对应的节点上,获取对应的账号权限。
步骤103,对步骤102所述3种账号的信息结构进行定义:
平台监管账号platformMgr包含:mgrName监管账号名称、companyGroup[]监管范围内的企业账号地址组、_platformMgr账户地址(payable可接收支付)。
出借农机企业账号company包含:companyName企业账号名称、machineGroup[]拥有的农机SN组、_company账户地址(payable可接收支付)。
租赁方普通账号tenant包含:tenantName租赁方姓名、mobile租赁方手机号、credit租赁方信用分、blacklist信用黑名单状态布尔变量、_tenant账户地址。
实现Solidity智能合约设计、编译和部署,包括如下步骤:
步骤201,首先在计算机上启动Docker容器引擎程序作为基础环境准备。
步骤202,在solcjs编译台上创建一个sol格式智能合约文件;对所述sol格式智能合约文件的代码进行编辑。编辑内容包括版本声明、对农机自助付费租赁业务信息所含变量的定义、租赁业务函数设计。
步骤203,对步骤202中所述版本声明进行编写,调用pragma语句,声明所使用solidity语言版本。
步骤204,对步骤202中所述农机自助付费租赁业务信息所含变量进行定义,包括①单台农机信息的结构、②租赁业务公用信息,如下:
①单台农机信息machine的结构:
enum Statuses枚举农机状态值Vancant(可用)和Occupied(占用);
Statuses currentStatus用Statuses定义的农机当前状态;
holder农机归属方账户地址;
enum Types枚举农机8种类型,依序分别对应:收割,排灌,耕地,播种,植保,畜牧饲养,动力输送,其他;
Types machineType用Types定义单台农机类型;
machineSN农机序列号;
machineName农机名称;
perPrice农机每小时租赁单价。
②租赁业务公用信息:
event Occupy(address _tenant, uint256 _value)定义事件Occupy(付费租用),包含变量_ tenant(租赁方账户地址)和_value(付费价格);
event Token(machineSN, string _token)定义事件Token(验证口令),包含变量machineSN(农机序列号)和_token(验证口令);
owner收款方账户地址;
rentHour租赁小时数;
rentStart实际起租时间;
deadLine归还截止时间;
rentEnd实际归还时间;
realrentHour实际租赁小时数;
ifOk是否成功归还状态布尔变量。
步骤205,对步骤204中变量的值进行初始化如下:
currentStatus = Statuses.Vancant初始化农机当前状态为可用;
owner = msg.sender初始化收款方为合约部署方;
rentHour = 1初始化租赁小时数为1;
credit = 0初始化信用分为0;
rentStart = block.timestamp初始化起租时间为区块时间戳;
deadLine = rentStart + rentHour * 3600初始化归还截止时间为起租时间加上租赁时长(单位:秒);
ifOk = true初始化是否成功归还状态为true;
blacklist = false 初始化租赁方信用黑名单状态为正常(非拉黑)。
步骤206,对步骤202中所述租赁业务函数(包括函数修饰器)进行设计:
①函数修饰器“农机状态判定与返回”modifier onlyWhileVancant
要求仅当当前农机状态为可用时(currentStatus == Statuses.Vancant)后续函数③可生效执行,否则返回“该农机已租出;”
②函数修饰器“信用分判定与返回”modifier onlyWhileCreditable
要求仅当租赁方信用分大于等于0且是否成功归还变量状态为true时(credit >= 0 && ifOk=true)后续函数③、④可生效执行,否则返回提示文字:“租赁方信用分不合格或有农机未归还,不具备租赁资格”,且后续函数③、④不可生效执行;
③函数“租农机”function Rent(machineSN, rentHour)
运行该函数前提为函数修饰器“农机状态判定与返回”和“信用分判定与返回”均符合要求,即(currentStatus == Statuses.Vancant)且(credit >= 0 && ifOk=true);
定义是否成功租借状态的变量ifSuccess(布尔类型);
总租金total=租用时长rentHour*每小时租赁单价perPrice;
转账金额msg.value等于总租金total;
设收款方owner为农机所属公司账户地址_company;
将收款方地址owner赋值于msg.sender;
改农机状态currentStatus为占用中Statuses.Occupied;
用租赁者账户地址_tenant和实际转账金额_value调用事件Occupy(付费租用);
向msg.sender转账msg.value;
如果实际转账金额等于应付总租金,则付费租用成功(ifSuccess = true),并生成6位随机验证码rentToken;返回文本“成功租用农机”和随机验证码rentToken。
如果实际转账金额_value不等于应付总租金msg.value则付费租用失败(ifSuccess = false),仅返回“付费租用失败”文本。
④函数“还农机”function ReturnMch(machineSN, _token)
如果验证口令_token不等于随机验证码rentToken,则归还失败(ifOk = false)。仅返回文本"验证失败,终止归还";验证口令_token等于随机验证码rentToken,执行如下:
实际归还时间rentEnd=归还农机调用合约区块链时间戳block.timestamp;
实际租用小时数realrentHour=实际归还时间rentEnd(秒转小时除以3600)减去实际起租时间rentStart(秒转小时除以3600);
用农机序列号machineSN和验证口令_token,作为参数去调用事件Token(验证口令);
如果验证口令_token等于随机验证码rentToken,且实际租用时长realrentHour小于等于租用时长rentHour,则属于按时归还,信用分+1,且归还成功,ifOk = true。
如果验证口令_token等于随机验证码rentToken,但实际租用时长realrentHour大于租用时长rentHour,则属于超期归还,须支付总罚款penalty =超期时长(rentHour –realrentHour)*每小时租赁单价perPrice;转账过程如下:
转账金额msg.value等于总罚款penalty;
收款方owner为农机所属公司账户地址_company;
将收款方地址owner赋值于msg.sender;
改农机状态currentStatus为可用Statuses.Vancant;
用租赁者账户地址_tenant和实际转账金额_value调用事件Occupy(付费租用);
向msg.sender转账msg.value。
如果实际转账金额_value等于应付总罚款msg.value,则归还成功(ifOk =true),信用分credit减1,tenant.blacklist重新赋值为false,租赁方从信用黑名单释放;
如果实际转账金额_value不等于应付总罚款msg.value,则归还失败(ifOk =false)。
在验证口令_token等于随机验证码rentToken的两种情况下,函数最终返回信用分值credit和是否归还成功状态布尔变量ifOk。
⑤函数“农机出借超期报警”function alarm(string SN)
用农机序列号machineSN指向该农机对象machines[SN]即machine;
如果该农机实际租用时长machine.realrentHour大于租用时长machine.rentHour且农机当前状态machine. currentStatus为占用中Statuses.Occupied,则返回文本“农机超期未归还”,并且将租用该农机的用户的信用黑名单状态激活(tenant.blacklist = true);
如果该农机实际租用时长machine.realrentHour大于租用时长machine.rentHour且农机当前状态machine. currentStatus为可用Statuses.Vancant,则返回文本“农机超期已归还”;
其余情况下不报警。
注:该函数须配合应用层定时器定时自动调用,直至到达该台农机租用截止时间deadLine的时刻。
⑥函数“查询用户信用分”function checkCredit(_tenant)
用租赁用户账号地址_tenant指向该账号对象tenants[msg.sender]即tenant;
如果该租赁用户账号信用分大于等于0且未被列入信用黑名单(tenant.credit >= 0 && tenant.blacklist == false ),则返回文本"租赁用户信用分正常"和信用分数值;
如果该租赁用户账号信用分小于0或被列入信用黑名单(tenant.credit < 0 |tenant.blacklist == true ),否则返回文本"租赁用户信用分为负列入黑名单"和信用分数值;
其他情况下,则返回文本"租赁用户暂时列入黑名单,请尽快归还农机"和信用分数值。
⑦函数“新增监管账号”function ctPlatformMgr(string _Name, address _adrMgr)
将_Name的值的存入监管账号名称mgrName;
将_adrMgr的值的存入监管账户地址_platformMgr。
⑧函数“新增企业账号”function ctCompany(string _Name, address _adrCmp)
将_Name的值的存入企业账号名称companyName;
将_adrCmp的值的存入企业账户地址_company。
⑨函数“新增普通账号”function ctTenant(string _Name, uint256 _mobile,address _adrTnt)
将_Name的值的存入普通账号租赁方姓名tenantName;
将_mobile的值存入租赁方手机号mobile;
将_adrTnt的值的存入普通账户地址_tenant。
⑩函数“新增农机”function ctMachine(string _type, string _SN, string _Name, uint _prc)
将_type的值存入农机类型machineType;
将_SN的值存入农机序列号machineSN;
将_Name的值存入农机名称machineName;
将_prc的值存入农机每小时租赁单价perPrice。
⑪函数“将农机绑定到企业账号”function enrollMachine(machineSN, _adrCmp)
将需要绑定的农机的machineSN写入企业账户地址_company为_adrCmp的企业拥有的农机SN组machineGroup[]。
⑫函数“将企业账号绑定到监管账号”function enrollCompany(_company, _adrMgr)
将需要绑定的企业账户地址_company写入账户地址_platformMgr为_adrMgr的平台监管账号的监管范围内的企业账号地址组companyGroup[]。
步骤207,使用solcjs对所述sol格式智能合约文件的代码进行编译;由原始代码转译成二进制码和字节码。
步骤208,所述智能合约在联盟链上的部署过程为:将创建的sol格式智能合约文件,以部署交易的方式上链至联盟链;发送智能合约文件二进制码和字节码,放入区块链交易操作的Input Data中,编辑以0x0开头的接收地址,将以上所有数据打包成交易区块;区块链矿工根据以0x0开头的地址,判定这一交易区块中的交易类型为“发送合约,部署上链”,验证信息正确性后执行区块上链,即,将智能合约部署上链。此时智能合约拥有合约地址并存在链上。
步骤209,所述智能合约部署交易将被联盟链同步至所有节点,即,所有节点将可通过虚拟机读取并调用该智能合约。
农机租赁信息上链时智能合约验证数据和预警的运行机制主要分为信息上链并同步至所有节点、节点调用智能合约判断农机租赁数据、获得判断返回报警结果。如下步骤301~步骤306:
步骤301,步骤3所述信息上链并同步至所有节点,包括:将农机租赁信息打包成区块并加密、区块上链并同步至所有联盟链内节点。
步骤302,步骤301中提到的农机租赁信息打包成区块并加密具体为:节点调用SDK工具包,按照一个区块的结构将农机租赁信息写入区块体中的Input Data,并写入时间戳、调用智能合约地址等,然后对农机租赁信息进行一次哈希处理,并对哈希进行签名。
步骤303,步骤301中提到的将包含农机租赁信息的区块上链并同步至所有联盟链节点具体为:该包含农机租赁信息的区块信息被联盟链广播至所有节点,在数据写入格式符合要求的情况下,通过共识机制将该区块信息同步至所有节点,并更新整条区块链。
步骤304,步骤3所述节点调用智能合约判断农机租赁信息数据机制方法为,3类不同权限节点(即平台监管节点、出借农机企业节点和普通节点)自动通过虚拟机读取智能合约的字节码,将农机租赁信息的对应变量值代入sol格式智能合约文件的代码(其中“函数:农机出借超期报警”须配合应用层定时器定时触发调用),之后执行智能合约。
步骤305,通过步骤304所述将农机租赁信息结构的对应变量值代入智能合约代码并执行智能合约内功能函数后,各节点将可能获得对应报警返回结果的类型,包括:
①平台监管节点、出借农机企业节点,收到:"农机超期未归还"、"农机超期归还"(平台监管节点收到所有管辖企业报警,企业仅收到本企业报警);
②普通节点,收到:"付费租用成功"、"付费租用失败"、"租赁方信用分不合格或有农机未归还,不具备租赁资格!"、"归还农机成功"、"验证失败,终止归还"、"归还农机失败"、"租赁用户信用分正常"、"租赁用户信用分为负列入黑名单"、"租赁用户暂时列入黑名单,请尽快归还农机"。
步骤306,3类节点自动将步骤305中所获得的报警返回结果返回给SDK工具包。
有益效果:与现有技术相比,本发明提供的基于区块链智能合约的农机自助付费租赁方法,通过所述FISCO BCOS联盟链架构智能合约,可实现在联盟链内对农机租赁上链信息的智能验证和预警。本发明可广泛应用于智慧农业服务信息化管理体系与产业供应链大数据共享体系,应用成本低,维护简单,并具有功能性优势与广阔的开发前景。对比现有农机自助付费租赁系统和方法,本发明核心优势总结如下:
(1)联盟链共识机制和Solidity合约自动化运行共同作用下,避免传统租赁交易系统常见的账号泄露和管理混乱问题,避免因数据泄露引发的徇私作弊行为,严格保障农机租赁信息、用户信用分的数据安全和不易篡改性;
(2)通过对账号的分级管理与信用管理,以及智能合约中对账号未归还农机信息的校验,精确避免掮客分成、批量转租获利等问题。如果租赁账号信用分为负或被列入信用黑名单则不能继续租赁行为,必须先归还农机、支付罚款等。
(3)不影响数据上链效率的情况下,拓宽了单次数据上链的业务应用层次,实现了分权限等级查看不同数据范围农机租赁信息的目的;
(4)实现租赁信息实时监管、区域性农机综合化治理等高级管理功能;
(5)本发明可在常见服务器上进行部署,并可兼容常见通信设备和采集端口,产业适用度广,应用成本适中,易于联盟链成员机构学习与上手操作。
附图说明
图1是本发明方法的流程图。
实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
如图1所示,基于联盟链的农机自助付费租赁方法,包含以下部分:(1)基于联盟链FISCO BCOS架构节点共识机制的账户管理,(2)Solidity智能合约设计、编译和部署,(3)农机租赁信息上链并智能验证和预警。
(1)实现基于联盟链FISCO BCOS架构节点共识机制的账户管理。
步骤101,将节点按权限等级设定分为3种类型:“平台监管节点”、“出借农机企业节点”和“普通节点”。通过根证书CA签发的R证书,在服务器注册进入联盟链中时,标定单个服务器将成为的节点类型。
步骤102,通过根证书CA签发的SDK证书允许“监管账号”、“出借农机企业账号”和“普通账号”这3类账号,分别准入联盟链并挂靠在101所述对应的节点上,获取对应的账号权限。
步骤103,对102所述3种账号的信息结构进行定义:
struct platformMgr{
string mgrName; //定义监管账号名称
address[] companyGroup; //定义监管范围内的企业账号地址组
address payable _platformMgr; //定义账户地址(payable可接收支付)
}
struct company{
string companyName; //定义企业账号名称
string[] machineGroup; //定义拥有的农机SN组
address payable _company; //定义账户地址(payable可接收支付)
}
struct tenant{ //定义普通账号,即租赁方的信息结构
string tenantName; //定义租赁方姓名
uint256 mobile; //定义租赁方手机号
uint credit; //定义租赁方信用分
bool blacklist; //定义租赁方信用黑名单状态布尔变量,true为被拉黑
address _tenant; //定义账户地址
}
(2)实现Solidity智能合约设计、编译和部署。
步骤201,首先在计算机上启动Docker容器引擎程序作为基础环境准备。
步骤202,在solcjs编译台上创建一个sol格式智能合约文件;对所述sol格式智能合约文件的代码进行编辑。编辑内容包括版本声明、对农机自助付费租赁业务信息所含变量的定义、租赁业务函数设计,如下步骤203~206所述:
步骤203,对步骤202中所述版本声明进行编写,调用pragma语句,声明所使用solidity语言版本。
步骤204,对步骤202中所述农机自助付费租赁业务信息所含变量进行定义,包括①单台农机信息的结构、②租赁业务公用信息,如下:
①单台农机信息的结构:
struct machine{ //定义单台农机信息结构
enum Statuses {Vancant, Occupied} //枚举农机状态值Vancant(可用)和Occupied(占用)
Statuses currentStatus; //用Statuses定义变量currentStatus(农机当前状态)
address public holder; //定义农机归属方账户地址
enum Types {T1, T2, T3, T4, T5, T6, T7, T8} //枚举农机8种类型,依序分别对应:收割,排灌,耕地,播种,植保,畜牧饲养,动力输送,其他
Types machineType; //用Types定义machineType(单台农机类型)
string machineSN; //定义农机序列号
string machineName;//定义农机名称
uint perPrice; //定义农机每小时租赁单价
}
②租赁业务公用信息:
event Occupy(address _tenant, uint256 _value); //定义事件Occupy(付费租用),包含变量_ tenant(租赁方账户地址)和_value(付费价格)
event Token(machineSN, string _token); //定义事件Token(验证口令),包含变量machineSN(农机序列号)和_token(验证口令)
address payable public owner; //定义收款方账户地址
uint rentHour; //定义租赁小时数
uint rentStart; //定义实际起租时间
uint deadLine; //定义归还截止时间
uint rentEnd; //定义实际归还时间
uint realrentHour; //定义实际租赁小时数
bool ifOk; //定义是否成功归还状态变量ifOk
步骤205,对步骤204中变量的值进行初始化如下:
constructor() public {
currentStatus = Statuses.Vancant; //初始化农机当前状态为可用
owner = msg.sender; //初始化收款方为合约部署方
rentHour = 1; //初始化租赁小时数为1
credit = 0; //初始化信用分为0
rentStart = block.timestamp; //初始化起租时间为区块时间戳
deadLine = rentStart + rentHour * 60 * 60; //初始化归还截止时间为起租时间加上租赁时长(单位:秒)
ifOk = true; //初始化是否成功归还状态为true
blacklist = false; //初始化用户不在黑名单中
}
步骤206,对步骤202中所述租赁业务函数(包括函数修饰器)进行设计:
(1)函数修饰器:农机状态判定与返回
modifier onlyWhileVancant {
require(currentStatus == Statuses.Vancant, "该农机已租出!");//要求仅当当前状态为可用时函数生效,否则返回“该农机已租出!”
_;
}
(2)函数修饰器:信用分判定与返回
modifier onlyWhileCreditable {
require(credit >= 0 && ifOk=true, "租赁方信用分不合格或有农机未归还,不具备租赁资格!"); //要求仅当租赁方信用分大于等于0且是否成功归还变量状态为true时函数生效,否则返回“租赁方信用分不合格或有农机未归还,不具备租赁资格!”
_;
}
(3)函数:租农机
function Rent(machineSN, rentHour) external
payable
onlyWhileVancant
onlyWhileCreditable
returns(bool,uint256)
{
bool ifSuccess; //定义是否成功租借状态变量ifSuccess
uint total = rentHour * perPrice; //总租金=租用时长*每小时租赁单价
msg.value = total; //转账金额等于总租金
owner = _company; //定义收款方为农机所属公司账户地址
msg.sender = owner; //将收款方地址赋值于msg.sender
currentStatus = Statuses.Occupied; //改农机状态为占用中
emit Occupy(_tenant, _value); //调用事件Occupy(付费租用)
msg.sender.transfer(msg.value); 向msg.sender转账msg.value
if (msg.value == _value){ //如果实际转账金额等于应付总租金
ifSuccess = true; //则付费租用成功
return("付费租用成功");
uint256 randomnum = uint256(keccak256(abi.encodePacked(block.difficulty, now)));
uint256 rentToken = randomnum%999999; //生成6位随机验证码
}else{ //如果实际转账金额不等于应付总租金
ifSuccess = false; //则付费租用失败
return("付费租用失败");
_;
}
return (ifSuccess, rentToken); //返回租农机结果和随机验证码
}
(4)函数:还农机
function ReturnMch(machineSN, _token)external payable returns(uint,bool){
rentEnd = block.timestamp; //实际归还时间=归还农机调用合约区块链时间戳
realrentHour = rentEnd%3600 – rentStart%3600; //实际租用小时数=实际归还时间(秒转小时除以3600)减去实际起租时间(秒转小时除以3600)
emit Token(machineSN, _token); //调用事件Token(验证口令)
if(_token == rentToken){
if(realrentHour <= rentHour){
credit ++; //按时归还信用分+1
ifOk = true; //归还成功
}else{
uint penalty = ( realrentHour – rentHour ) * perPrice; //总罚款=超期时长*每小时租赁单价
msg.value = penalty; //转账金额等于总罚款
owner = _company; //定义收款方为农机所属公司账户地址
msg.sender = owner; //将收款方地址赋值于msg.sender
currentStatus = Statuses.Vancant; //改农机状态为可用
emit Occupy(_tenant, _value); //调用事件Occupy(付费租用)
msg.sender.transfer(msg.value); 向msg.sender转账msg.value
if (msg.value == _value){ //如果实际转账金额等于应付总罚款
ifOk = true; //归还成功
credit = credit - 1; //超期归还信用分-1
blacklist = false; //用户被从信用黑名单中释放
}else{ //如果实际转账金额不等于应付总罚款
ifOk = false; //归还失败
}
}else{
ifOk = false; //归还失败
return("验证失败,终止归还");
_;
}
return(credit,ifOk); //返回信用分值和是否归还成功状态
}
(5)函数:农机出借超期报警
function alarm(string SN) public view returns(string){
mapping(string => machine) machineSN;
machineSN[SN] = machine;
if(machine. realrentHour > machine. rentHour && machine.currentStatus = Statuses.Occupied){
return("农机超期未归还");
tenant.blacklist = true; //租用者被列入信用黑名单
}else if((machine. realrentHour > machine.rentHour && machine.currentStatus = Statuses.Vancant){
return("农机超期已归还");
}else{
_;
}
}
(6)函数:查询用户信用分
function checkCredit(_tenant) public view returns(string, uint){
mapping(address => tenant) tenants;
tenants[msg.sender] = _tenant; //用租赁用户账号地址指向该账号对象
if(tenant.credit >= 0 && tenant.blacklist == false){ //如果该租赁用户账号信用分大于等于0且未在信用黑名单中
return("租赁用户信用分正常", credit); //则返回"租赁用户信用分正常"和信用分分值;
}else if(tenant.credit < 0 | tenant.blacklist == true){ //如果信用分小于0或账号在信用黑名单中
return("租赁用户信用分为负", credit); //返回"租赁用户信用分为负列入黑名单"和信用分分值;
}else{
Return("租赁用户暂时列入黑名单,请尽快归还农机", credit); //返回"租赁用户暂时列入黑名单,请尽快归还农机"和信用分分值;
}
}
(7)函数:新增监管账号
function ctPlatformMgr(string _Name, address _adrMgr){
platformMgr.mgrName = _Name; //将_Name的值的存入监管账号名称mgrName
platformMgr._platformMgr = _adrMgr; //将_adrMgr的值的存入监管账户地址_platformMgr
}
(8)函数:新增企业账号
function ctCompany(string _Name, address _adrCmp){
Company.companyName = _Name; //将_Name的值的存入企业账号名称companyName
Company._company = _adrCmp; //将_adrCmp的值的存入企业账户地址_company
}
(9)函数:新增普通账号
function ctTenant(string _Name, uint256 _mobile, address _adrTnt){
tenant.tenantName = _Name; //将_Name的值的存入普通账号租赁方姓名tenantName
tenant.mobile = _mobile; //将_mobile的值存入租赁方手机号mobile
tenant. _tenant = _adrTnt; //将_adrTnt的值的存入普通账户地址_tenant
}
(10)函数:新增农机
function ctMachine(string _type, string _SN, string _Name, uint _prc){
machine.machineType = _type; //将_type的值存入农机类型machineType
machine.machineSN = _SN; //将_SN的值存入农机序列号machineSN
machine.machineName = _Name; //将_Name的值存入农机名称machineName
machine. perPrice = _prc; //将_prc的值存入农机每小时租赁单价perPrice
}
(11)函数:将农机绑定到企业账号
function enrollMachine(string SN, address _adrCmp){
mapping(address => company) companys;
companys[_adrCmp] = _company;
uint l = machineGroup.length;
uint r = l + 1;
cmpanys[_adrCmp].machineGroup.push(r) = SN; //将需要绑定的农机序列号SN写入企业账户地址_company为_adrCmp的企业拥有的农机SN组machineGroup[]
}
(12)函数:将企业账号绑定到监管账号
function enrollCompany(address _addcompany, address _adrMgr){
mapping(address => platformMgr) platformMgrs;
platformMgrs [_adrMgr] = _platformMgr;
uint t = companyGroup.length;
uint s = l + 1;
platformMgrs [_adrMgr]. companyGroup.push(s) = _addcompany;
} ; //将需要绑定的企业账户地址_addcompany写入账户地址_platformMgr为_adrMgr的平台监管账号的监管范围内的企业账号地址组companyGroup[]
步骤207,使用solcjs对所述sol格式智能合约文件的代码进行编译;由原始代码转译成二进制码和字节码。
步骤208,智能合约在联盟链上的部署过程为:将创建的sol格式智能合约文件,以部署交易的方式上链至联盟链;发送智能合约文件二进制码和字节码放入区块链交易的Input Data中,编辑接收地址以0x0开头,打包成交易区块;区块链矿工根据0x0的地址头,判定这一交易区块中的交易类型为“发送合约,部署上链”,验证信息正确性后执行区块上链,即将智能合约部署上链。此时智能合约拥有合约地址并存在链上。
步骤209,智能合约部署交易将被联盟链同步至所有节点,即所有节点将可通过虚拟机读取并调用该智能合约。
(3)农机租赁信息上链时智能合约验证数据和预警的运行机制主要分为信息上链并同步至所有节点、节点调用智能合约判断农机租赁数据、获得判断返回报警结果。如下步骤301~步骤306:
步骤301,步骤3所述信息上链并同步至所有节点,包括:将农机租赁信息打包成区块并加密、区块上链并同步至所有联盟链内节点。
步骤302,步骤301中提到的农机租赁信息打包成区块并加密具体为:节点调用SDK工具包,按照一个区块的结构将农机租赁信息写入区块体中的Input Data,并写入时间戳、调用智能合约地址等,然后对农机租赁信息进行一次哈希处理,并对哈希进行签名。
例如1:为了调用函数⑨“新增普通账号”,即实现租赁方注册账号的功能,需要将姓名值_Name, 手机值_mobile, 账户地址值_adrTnt三个参数的信息写入区块体的InputData。
例如2:为了调用函数⑩“新增农机”,即实现添加一台可出借农机的信息,需要将农机类型值_type, 农机SN号值_SN, 农机名称值_Name, 农机每小时租金值_prc四个参数的信息写入区块体的Input Data。
例如3:为了调用函数③“租农机”,即实现租赁方付费租用某一台农机的功能,需要将农机SN号machineSN, 和租赁时长rentHour两个参数的信息写入区块体的InputData。
步骤303,步骤301中提到的将包含农机租赁信息的区块上链并同步至所有联盟链节点具体为:该包含农机租赁信息的区块信息被联盟链广播至所有节点,在数据写入格式符合要求的情况下,通过共识机制将该区块信息同步至所有节点,并更新整条区块链。
步骤304,步骤3所述节点调用智能合约判断农机租赁信息数据机制方法为,3类不同权限节点(即平台监管节点、出借农机企业节点和普通节点)自动通过虚拟机读取智能合约的字节码,将农机租赁信息的对应变量值代入智能合约代码(其中“函数:农机出借超期报警”须配合应用层定时器定时触发调用),之后执行智能合约。
继续上文所提例3:
假设智能合约在接收到调用函数③“租农机”的两个参数machineSN=A0001、rentHour=48后,首先通过函数修饰器①“农机状态判定与返回”modifieronlyWhileVancant判断该SN:A0001农机当前状态是否为Statuses.Vancant可用,同时通过函数修饰器②“信用分判定与返回”modifier onlyWhileCreditable判定调用合约账户的信用分是否大于等于0且是否无农机未归还。当两个前置条件均符合租赁条件时,允许继续执行“租农机”函数。
假设该SN:A0001农机每小时租金为0.2个币(perPrice=0.2),则租用48小时(rentHour=48)总共需要支付9.6个币。函数将调用事件“付费租用”emit Occupy向收款方账户地址(通过owner=_company赋值,使出借该农机的公司账户地址为收款地址)支付9.6个币。假如租赁方账户余额充足大于9.6个币,则可成功调用“付费租用”事件支付9.6个币。如余额不足则不能成功完成“付费租用”事件。
步骤305,通过步骤304所述将农机租赁信息结构的对应变量值代入智能合约代码并执行智能合约后,各节点将可能获得对应报警返回结果类型,包括:
①平台监管节点、出借农机企业节点,收到:"农机超期未归还"、"农机超期归还"(平台监管节点收到所有管辖企业报警,企业仅收到本企业报警);
②普通节点,收到:"付费租用成功"、"付费租用失败"、"租赁方信用分不合格或有农机未归还,不具备租赁资格!"、"归还农机成功"、"验证失败,终止归还"、"归还农机失败"、"租赁用户信用分正常"、"租赁用户信用分为负列入黑名单"、"租赁用户暂时列入黑名单,请尽快归还农机"。
继续上文所提例3:
当租赁用户调用事件“付费租用”emit Occupy成功向目标公司账户地址转账9.6个币后,将得到合约函数返回的信息“付费租用成功”和6位数字验证码(如“268541”)。如租赁用户转账失败则返回信息“付费租用失败”。
后续当该租赁用户在租期结束前,即realrentHour <=48时归还该SN:A0001农机,调用函数④“还农机”,输入参数machineSN(A0001)和_Token(6位数字验证码“268541”),验证码正确验证通过(验证码错误验证失败则返回“验证失败,终止归还”)。该用户可正常归还该农机,并且获得信用分credit增加1分的奖励。函数④ “还农机”将返回最新信用分分值和信息“归还农机成功”。
如果该租赁用户一直未归还该SN:A0001农机,则会被应用层定期触发的函数⑤农机出借超期报警执行报警行为,平台监管节点和出借农机企业将收到报警信息"农机超期未归还",同时租赁用户暂时被拉入信用黑名单(tenant.blacklist=true)。
若该租赁用户超期归还,在realrentHour=50时才归还农机,须向收款方账户地址转账(50-48)*0.2=0.4个币罚款。当租赁用户调用事件“付费租用”emit Occupy成功转账后,函数④“还农机”将返回最新信用分分值和信息“归还农机成功”,且该用户将被从信用黑名单中释放(tenant.blacklist=false)。但该用户将获得信用分credit减少1分的惩罚。
如果租赁用户调用事件“付费租用”emit Occupy支付罚款失败,函数④“还农机”将返回最新信用分分值和信息“归还农机失败”,租赁用户依然处于信用黑名单中(tenant.blacklist=true)。
步骤306,3类节点自动将步骤305中所获得的报警返回结果返回给SDK工具包。

Claims (4)

1. 一种基于联盟链的农机自助付费租赁方法,其特征在于:包含以下部分:(1)基于联盟链FISCO BCOS架构节点共识机制的账户管理,(2)Solidity智能合约设计、编译和部署,(3)农机租赁信息上链时智能合约验证数据和预警的运行机制,农机租赁信息上链时智能合约验证数据和预警的运行机制分为信息上链并同步至所有节点、节点调用智能合约判断农机租赁数据和获得判断返回报警结果;
实现Solidity智能合约设计、编译和部署,包括如下步骤:
步骤201,首先在计算机上启动Docker容器引擎程序作为基础环境准备;
步骤202,在solcjs编译台上创建一个sol格式智能合约文件;对所述sol格式智能合约文件的代码进行编辑;编辑内容包括版本声明、对农机自助付费租赁业务信息所含变量的定义和租赁业务函数设计;
步骤203,对步骤202中所述版本声明进行编写,调用pragma语句,声明所使用solidity语言版本;
步骤204,对步骤202中所述农机自助付费租赁业务信息所含变量进行定义,包括 ①单台农机信息的结构和②租赁业务公用信息;
步骤205,对步骤204中变量的值进行初始化;
步骤206,对步骤202中所述租赁业务函数进行设计;
步骤207,使用solcjs对所述sol格式智能合约文件的代码进行编译;由原始代码转译成二进制码和字节码;
步骤208,所述智能合约在联盟链上的部署过程为:将创建的sol格式智能合约文件,以部署交易的方式上链至联盟链;发送智能合约文件二进制码和字节码,并放入区块链交易的Input Data中,编辑以0x0开头的接收地址,打包成交易区块;区块链矿工根据以0x0开头的地址,当判定这一交易区块中的交易类型为“发送合约,部署上链”时,验证信息正确性后,将智能合约部署上链;
步骤209,智能合约部署交易将被联盟链同步至所有节点,即所有节点将能通过虚拟机读取并调用该智能合约;
所述步骤206,对步骤202中所述租赁业务函数进行设计,包括:
函数修饰器1,用于农机状态判定与返回,要求仅当当前农机状态为可用时后续函数3生效,否则返回文本:该农机已租出;
函数修饰器2,用于信用分判定与返回,要求仅当租赁方信用分大于等于0且是否成功归还变量状态为true时,后续函数3和函数4生效,否则返回文本:租赁方信用分不合格或有农机未归还,不具备租赁资格;
函数3,为租农机函数,运行该函数前提为函数修饰器1和函数修饰器2均符合要求;
定义是否成功租借状态变量,是否成功租借状态变量为布尔类型的变量;
总租金=租用时长*每小时租赁单价;
定义转账金额等于总租金;
定义收款方为农机所属公司账户地址;
将收款方地址赋值于合约部署方;
将农机状态改为占用中;
用租赁者账户地址和实际转账金额调用事件Occupy;
向合约部署方转账应付总租金;
如果实际转账金额等于总租金,则付费租用成功,并生成6位随机验证码;返回租农机结果和随机验证码;
如果实际转账金额不等于应付总租金则付费租用失败,仅返回文本:付费租用失败;
函数4,为还农机函数,如果验证口令不等于随机验证码,则归还失败;仅返回文本:验证失败,终止归还;验证口令等于随机验证码,执行如下:
实际归还时间等于归还农机调用合约区块链时间戳;
实际租用小时数等于实际归还时间减去实际起租时间;
用农机序列号和验证口令,作为参数去调用事件;
如果验证口令等于随机验证码,且实际租用时长小于等于租用时长,则属于按时归还,信用分加一,且归还成功;
如果验证口令等于随机验证码,但实际租用时长大于租用时长,则属于超期归还,须支付总罚款等于超期时长乘以每小时租赁单价;转账过程如下:
转账金额等于总罚款;
收款方为农机所属公司账户地址;
将收款方地址赋值于合约部署方;
改农机状态为可用;
用租赁者账户地址和实际转账金额调用事件Occupy;
向合约部署方转账转账金额;
如果实际转账金额等于应付总罚款,则归还成功,信用分减一,信用黑名单状态重新赋值为false,租赁方从信用黑名单释放;
如果实际转账金额不等于应付总罚款,则归还失败;
在验证口令等于随机验证码的两种情况下,函数最终返回信用分值和是否归还成功状态布尔变量;
函数5,为农机出借超期报警函数,用农机序列号指向该农机对象;如果该农机实际租用时长大于租用时长且农机当前状态为占用中,则返回文本:农机超期未归还,并且将租用该农机的用户的信用黑名单状态激活;如果该农机实际租用时长大于租用时长且农机当前状态为可用,则返回文本:农机超期已归还;
其余情况下不报警;
该函数须配合应用层定时器定时自动调用,直至到达该台农机租用截止时间的时刻;
函数6,为查询用户信用分函数,用租赁用户账号地址指向该账号对象;
如果该租赁用户账号的信用分大于等于0且未被列入信用黑名单,则返回:租赁用户信用分正常文本和信用分数值;
如果该租赁用户账号信用分小于0或被列入信用黑名单,否则返回:租赁用户信用分为负列入黑名单文本和信用分数值;
其他情况下,则返回:租赁用户暂时列入黑名单,请尽快归还农机文本和信用分数值;
函数7,用于新增监管账号,存入监管账号名称;存入监管账户地址;
函数8,为新增企业账号函数,存入企业账号名称;存入企业账户地址;
函数9,用于新增普通账号,存入普通账号租赁方姓名;存入租赁方手机号;存入普通账户地址;
函数10,为新增农机函数,存入农机类型;存入农机序列号;存入农机名称;存入农机每小时租赁单价;
函数11,用于将农机绑定到企业账号,将需要绑定的农机序列号写入对应的企业拥有的农机组;
函数12,用于将企业账号绑定到监管账号,将需要绑定的企业账户地址写入平台监管账号的监管范围内的企业账号地址组。
2. 根据权利要求1所述的基于联盟链的农机自助付费租赁方法,其特征在于:实现基于联盟链FISCO BCOS架构节点共识机制的账户管理,包括如下步骤:
步骤101,将节点按权限等级设定分为3种类型:平台监管节点、出借农机企业节点和普通节点;通过根证书CA签发的R证书,在服务器注册进入联盟链中时,标定单个服务器将成为的节点类型;
步骤102,通过根证书CA签发的SDK证书允许监管账号、出借农机企业账号和普通账号这3类账号,分别准入联盟链并挂靠在步骤101中对应的节点上,获取对应的账号权限;
步骤103,对步骤102所述3类账号的信息结构进行定义:
平台监管账号包含:监管账号名称、监管范围内的企业账号地址组、账户地址;
出借农机企业账号包含:企业账号名称、拥有的农机SN组、账户地址;
租赁方普通账号包含租赁方姓名、租赁方手机号、租赁方信用分、信用黑名单状态布尔变量、账户地址。
3.根据权利要求1所述的基于联盟链的农机自助付费租赁方法,其特征在于:
①单台农机信息的结构包括:
枚举农机状态值Vancant和Occupied,其中Vancant表示可用,Occupied表示占用;
定义农机当前状态;
定义农机归属方账户地址;
枚举农机8种类型,分别为:收割、排灌、耕地、播种、植保、畜牧饲养、动力输送和其他8种类型;
定义单台农机类型;
定义农机序列号;
定义农机名称;
定义农机每小时租赁单价;
②租赁业务公用信息包括:
定义事件Occupy,付费租用,包含变量租赁方账户地址和付费价格;
定义事件Token,验证口令,包含变量农机序列号和验证口令;
定义收款方账户地址,租赁小时数,实际起租时间,归还截止时间,实际归还时间,
实际租赁小时数,以及是否成功归还状态布尔变量;
步骤205,对步骤204中变量的值进行初始化如下:
初始化农机当前状态为可用;
初始化收款方为合约部署方;
初始化租赁小时数为1;
初始化信用分为0;
初始化起租时间为区块时间戳;
初始化归还截止时间为起租时间加上租赁时长,单位:秒;
初始化是否成功归还状态为true;
初始化租赁方信用黑名单状态为正常。
4.根据权利要求1所述的基于联盟链的农机自助付费租赁方法,其特征在于:农机租赁信息上链时,智能合约验证数据和预警的运行机制分别信息上链并同步至所有节点,节点调用智能合约判断农机租赁数据,获得判断返回报警结果;具体实现过程如下步骤301~步骤306:
步骤301,所述信息上链并同步至所有节点,包括:将农机租赁信息打包成区块并加密、区块上链并同步至所有联盟链内节点;
步骤302,步骤301中提到的农机租赁信息打包成区块并加密具体为:节点调用SDK工具包,按照一个区块的结构将农机租赁信息写入区块体中的Input Data,并写入时间戳、调用智能合约地址,然后对农机租赁信息进行一次哈希处理,并对哈希进行签名;
步骤303,步骤301中提到的将包含农机租赁信息的区块上链并同步至所有联盟链节点具体为:该包含农机租赁信息的区块信息被联盟链广播至所有节点,在数据写入格式符合要求的情况下,通过共识机制将该区块信息同步至所有节点,并更新整条区块链;
步骤304,所述节点调用智能合约判断农机租赁信息数据机制方法为,3类不同权限节点自动通过虚拟机读取智能合约的字节码,将农机租赁信息的对应变量值代入sol格式智能合约文件的代码,之后执行智能合约;3类不同权限节点分别为平台监管节点、出借农机企业节点和普通节点;
步骤305,通过步骤304将农机租赁信息结构的对应变量值代入智能合约代码并执行智能合约内功能函数后,各节点将获得对应报警返回结果的类型;
步骤306,3类节点自动将步骤305中所获得的报警返回结果返回给SDK工具包。
CN202011535093.XA 2020-12-23 2020-12-23 一种基于联盟链的农机自助付费租赁方法 Active CN112598466B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011535093.XA CN112598466B (zh) 2020-12-23 2020-12-23 一种基于联盟链的农机自助付费租赁方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011535093.XA CN112598466B (zh) 2020-12-23 2020-12-23 一种基于联盟链的农机自助付费租赁方法

Publications (2)

Publication Number Publication Date
CN112598466A CN112598466A (zh) 2021-04-02
CN112598466B true CN112598466B (zh) 2023-12-26

Family

ID=75200349

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011535093.XA Active CN112598466B (zh) 2020-12-23 2020-12-23 一种基于联盟链的农机自助付费租赁方法

Country Status (1)

Country Link
CN (1) CN112598466B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113569296B (zh) * 2021-09-26 2021-12-31 南京中网卫星通信股份有限公司 一种基于联盟链的共享设施安全租赁系统及其实现方法

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107194778A (zh) * 2017-05-25 2017-09-22 金立彦 基于区块链的设备租赁方法及系统
CN108537640A (zh) * 2018-04-13 2018-09-14 武汉大学 一种基于区块链技术的租赁管理方法
CN108648056A (zh) * 2018-05-10 2018-10-12 中链科技有限公司 一种基于区块链的房屋租赁合约处理方法及系统
CN108694654A (zh) * 2018-07-02 2018-10-23 浙江大学 一种基于区块链的房屋租赁系统及租赁方法
CN109360054A (zh) * 2018-09-30 2019-02-19 中链科技有限公司 基于区块链的汽车租赁方法、装置及电子设备
CN109993496A (zh) * 2019-01-17 2019-07-09 杭州趣链科技有限公司 一种基于区块链的住房租赁平台
CN110223138A (zh) * 2019-05-23 2019-09-10 阿里巴巴集团控股有限公司 基于区块链的家居租赁方法和装置
CN110246005A (zh) * 2019-05-23 2019-09-17 阿里巴巴集团控股有限公司 基于区块链的租赁方法和装置
CN110322312A (zh) * 2019-03-21 2019-10-11 复旦大学 一种基于区块链的共享租赁交易方法
CN110503510A (zh) * 2019-07-16 2019-11-26 阿里巴巴集团控股有限公司 基于信用的租物交互处理方法、装置以及系统
CN110597883A (zh) * 2019-09-19 2019-12-20 腾讯科技(深圳)有限公司 基于区块链的车辆租赁数据处理方法、装置和存储介质
WO2020029381A1 (zh) * 2018-08-08 2020-02-13 平安科技(深圳)有限公司 房产租赁方法、系统、计算机设备和存储介质
CN111031036A (zh) * 2019-12-12 2020-04-17 深圳大学 基于区块链的疫苗信息监控方法、装置及计算机设备
CN111652727A (zh) * 2020-06-15 2020-09-11 深圳证券通信有限公司 一种证券期货行业共享平台区块链基础设施架构方法
KR20200118696A (ko) * 2019-04-08 2020-10-16 나준기 블록체인 기반의 공유 보조배터리의 대여 및 반납 시스템 및 방법

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11328347B2 (en) * 2018-06-28 2022-05-10 International Business Machines Corporation Rental asset processing for blockchain
US11244383B2 (en) * 2019-02-27 2022-02-08 Rentberry, Inc. Systems and methods for managing rental reservations with blockchain
US11423473B2 (en) * 2019-04-10 2022-08-23 Advanced New Technologies Co., Ltd. Blockchain-based leasing

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107194778A (zh) * 2017-05-25 2017-09-22 金立彦 基于区块链的设备租赁方法及系统
CN108537640A (zh) * 2018-04-13 2018-09-14 武汉大学 一种基于区块链技术的租赁管理方法
CN108648056A (zh) * 2018-05-10 2018-10-12 中链科技有限公司 一种基于区块链的房屋租赁合约处理方法及系统
CN108694654A (zh) * 2018-07-02 2018-10-23 浙江大学 一种基于区块链的房屋租赁系统及租赁方法
WO2020029381A1 (zh) * 2018-08-08 2020-02-13 平安科技(深圳)有限公司 房产租赁方法、系统、计算机设备和存储介质
CN109360054A (zh) * 2018-09-30 2019-02-19 中链科技有限公司 基于区块链的汽车租赁方法、装置及电子设备
CN109993496A (zh) * 2019-01-17 2019-07-09 杭州趣链科技有限公司 一种基于区块链的住房租赁平台
CN110322312A (zh) * 2019-03-21 2019-10-11 复旦大学 一种基于区块链的共享租赁交易方法
KR20200118696A (ko) * 2019-04-08 2020-10-16 나준기 블록체인 기반의 공유 보조배터리의 대여 및 반납 시스템 및 방법
CN110223138A (zh) * 2019-05-23 2019-09-10 阿里巴巴集团控股有限公司 基于区块链的家居租赁方法和装置
CN110246005A (zh) * 2019-05-23 2019-09-17 阿里巴巴集团控股有限公司 基于区块链的租赁方法和装置
CN110503510A (zh) * 2019-07-16 2019-11-26 阿里巴巴集团控股有限公司 基于信用的租物交互处理方法、装置以及系统
CN110597883A (zh) * 2019-09-19 2019-12-20 腾讯科技(深圳)有限公司 基于区块链的车辆租赁数据处理方法、装置和存储介质
CN111031036A (zh) * 2019-12-12 2020-04-17 深圳大学 基于区块链的疫苗信息监控方法、装置及计算机设备
CN111652727A (zh) * 2020-06-15 2020-09-11 深圳证券通信有限公司 一种证券期货行业共享平台区块链基础设施架构方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Vikas Hassija.Cryptober: A Blockchain-based Secure and Cost-Optimal Car Rental Platform.《2019 Twelfth International Conference on Contemporary Computing (IC3)》.2019,第1-6页. *
基于区块链的去中心化物品共享交易服务系统;范吉立;《计算机应用》;第1330-1335页 *

Also Published As

Publication number Publication date
CN112598466A (zh) 2021-04-02

Similar Documents

Publication Publication Date Title
US11893626B2 (en) Method for creating commodity assets from unrefined commodity reserves utilizing blockchain and distributed ledger technology
CN108805707A (zh) 基于区块链的作品版权收益分配方法和装置
CN110941679B (zh) 一种合约数据处理方法、相关设备及介质
CN109064334B (zh) 一种智能合约记账方法、计算机装置及可读存储介质
CN110147990B (zh) 基于区块链的缴费代扣签约方法及装置、电子设备
TW202101440A (zh) 跨鏈發送資源的方法和裝置
US20210357195A1 (en) Method and System for Executable Smart Legal Contract Construction and Execution over Legal Contracts
CN112200571B (zh) 基于区块链的资源发放方法、装置及电子设备
CN111444209B (zh) 一种基于区块链的数据处理方法、装置、设备及介质
CN110443075A (zh) 一种区块链智能合约验证部署的方法及装置
CN111383114A (zh) 基于区块链的资产信息管理方法和装置
CN112200568B (zh) 基于区块链的账户创建方法、装置及电子设备
CN112200567A (zh) 基于区块链的资源管理方法、装置及电子设备
CN111340628A (zh) 基于区块链的资产信息管理方法和装置
CN111402033A (zh) 基于区块链的资产信息管理方法和装置
CN111639125A (zh) 基于区块链的资源流通方法及装置
CN109726249B (zh) 一种去中心化芯片研发交易数据存储方法及系统
CN110597919A (zh) 基于区块链的数据管理方法、装置、设备及存储介质
CN112200572A (zh) 基于区块链的资源发放方法、装置及电子设备
CN110827145A (zh) 基于区块链智能合约的处理方法和系统
CN112598466B (zh) 一种基于联盟链的农机自助付费租赁方法
CN111090697A (zh) 一种基于联盟链的票务系统
CN110458538B (zh) 基于区块链的状态机维护方法及装置、电子设备、存储介质
Ko et al. Survey on blockchain‐based non‐fungible tokens: History, technologies, standards, and open challenges
CN110458541B (zh) 基于区块链的对象置换方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant