1.一种区块链上分布式锁实现方法,包括授权分发中心和多个应用服务器,以及一个区块链上智能合约,其特征在于,预先各应用服务器设定自身唯一的区块链密钥对,授权分发中心在区块链上部署智能合约,调用合约接口给各类锁设定所授权的应用服务器列表,应用服务器调用合约接口实现加锁及解锁;
所述授权分发中心部署区块链上智能合约,调用智能合约接口,维护每类锁所授权的应用服务器的列表;
所述应用服务器内设定有唯一的区块链密钥对,调用区块链上智能合约的加锁或解锁接口,实现加锁及解锁;
所述区块链上智能合约内存储有按名字分类的多个锁,分类内有多个按照锁ID识别的锁,并对外提供维护锁分类、加锁、解锁调用接口;
所述的区块链上分布式锁实现方法,具体包括以下步骤:
S001:授权分发中心在区块链上部署一个智能合约C,各应用服务器设为T,应用服务器维护其自身唯一密钥对,并设定密钥对对应的区块链地址分别为T1,T2,...;
S002:授权分发中心针对某类锁L,调用C上的授权接口,包括参数L授权的应用服务器地址列表,每次调用将覆盖原L同名的授权设置;
S003:断言:若存在记录,且T的区块链地址在列表内,则执行S004,反之,执行S006;
S004:C根据锁类型L及锁ID查找加锁表,找出对应的记录R,C上存储有锁类型授权表,记录类型为:锁类名L,授权的区块链地址列表;应用服务器有加锁表,记录类型为: 锁类型L的识别ID,锁持有者地址和锁超时时间;
S005:断言:若不存在R,或R的持有者T时,或R的锁超时时间早于链上当前时间,则执行S006,反之,则执行S007;
S006:操作失败,输出结束;
S007:若存在R,先删除R,增加记录到加锁表,记录内容包括锁类型L的识别ID,T地址,链上当前时间;
S008:已成功加锁,应用服务器执行加锁后的对应业务逻辑,应用服务器加锁时,用本身的唯一密钥对来签名调用C上的加锁接口,加锁接口包括锁类型L的识别ID和最大加锁秒数,若返回成功则加锁成功;
S009:T签名调用C上的解锁接口,C根据锁类型L及锁类型L的识别ID查找加锁表,找出对应的记录R,应用服务器解锁时,用本身的唯一密钥对来签名调用C上的解锁接口,解锁接口包括锁类型L的识别ID;
S010:断言:存在R,且R上的持有者是T,且加锁超时时间晚于链上当前时间,则执行S011,反之,执行S012;
S011:删除R,解锁结束;
S012:操作成功,输出结束。