The invention provides a block chain contract implementation method and system based on Scala, which includes: compiling contract statically in integrated development environment, calling contract interface through interface abstraction and class reflection mechanism; naming contract class by unique naming mechanism; and compiling contract by ScalaTest toolkit. Contracts will be tested; Scala contract classes will be dynamically compiled and loaded through the class reflection mechanism after the test contract is blocked and blocked through the Deploy type signature transaction consensus; the contract will be invoked according to the contract identity returned from the deployment. The invention can use Turing's complete Scala language which has been tested by engineering practice as contract development language, expand the application scenario of block chain, and reduce the difficulty of contract development and debugging by using universal and mature IDE as contract development and debugging tool.
【技术实现步骤摘要】
一种基于Scala的区块链合约实现方法及系统
本专利技术涉及区块链
,尤其涉及一种基于Scala的区块链合约实现方法及系统。
技术介绍
区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。但是,随着区块链的广泛使用,出现需要适应更多的应用场景以及允许第三方编写、签名部署、签名调用合约的问题。
技术实现思路
本专利技术提供的基于Scala的区块链合约实现方法及系统,能够采用图灵完备、经过工程化实践检验的Scala语言作为合约开发语言,扩展区块链的应用场景,同时由于采用通用、成熟的IDE作为合约的开发调试工具,降低了合约开发调试的难度。第一方面,本专利技术提供一种基于Scala的区块链合约实现方法,包括:在集成开发环境下静态编译合约,并通过接口抽象结合类反射机制实现合约接口调用;通过唯一命名机制对合约类进行命名;通过ScalaTest工具包对所编译合约进行测试;将通过测试的合约通过Deploy类型的签名交易共识入块、出块之后经类反射机制实现Scala合约类的动态编译和加载合约后完成全网部署;根据部署返回的合约标识对所述合约进行调用。可选地,所述通过ScalaTest工具包对所编译合约进行测试包括:通过ScalaTest工具包编写自动化测试用例;遍历所编译合约的所有提供给外部交易请求调用的公开方法,用以测试所编译合约。可选地,所述将通过测试的合约通过Deploy类型的签名交易共识入块、出块之后经类 ...
【技术保护点】
1.一种基于Scala的区块链合约实现方法,其特征在于,包括:在集成开发环境下静态编译合约,并通过接口抽象结合类反射机制实现合约接口调用;通过唯一命名机制对合约类进行命名;通过ScalaTest工具包对所编译合约进行测试;将通过测试的合约通过Deploy类型的签名交易共识入块、出块之后经类反射机制实现Scala合约类的动态编译和加载合约后完成全网部署;根据部署返回的合约标识对所述合约进行调用。
【技术特征摘要】
1.一种基于Scala的区块链合约实现方法,其特征在于,包括:在集成开发环境下静态编译合约,并通过接口抽象结合类反射机制实现合约接口调用;通过唯一命名机制对合约类进行命名;通过ScalaTest工具包对所编译合约进行测试;将通过测试的合约通过Deploy类型的签名交易共识入块、出块之后经类反射机制实现Scala合约类的动态编译和加载合约后完成全网部署;根据部署返回的合约标识对所述合约进行调用。2.根据权利要求1所述的方法,其特征在于,所述通过ScalaTest工具包对所编译合约进行测试包括:通过ScalaTest工具包编写自动化测试用例;遍历所编译合约的所有提供给外部交易请求调用的公开方法,用以测试所编译合约。3.根据权利要求1或2所述的方法,其特征在于,所述将通过测试的合约通过Deploy类型的签名交易共识入块、出块之后经类反射机制实现Scala合约类的动态编译和加载合约后完成全网部署包括:将合约内容以文本方式写入区块链;由交易请求调度类根据Deploy类型的签名交易,新建对应的合约容器,并由合约容器经类反射机制实现Scala合约类的动态编译和加载到内存并初始化;由部署交易请求将返回的合约标识作为调用所述合约的指向,以使合约完成全网部署。4.根据权利要求3所述的方法,其特征在于,所述由合约容器经类反射机制实现Scala合约类的动态编译和加载到内存并初始化包括:定义抽象接口,并让合约类开放其被调用的时机;通过唯一命名机制对合约类进行命名;由动态编译工具类、加载工具类分别对合约类执行动态编译和加载。5.根据权利要求4所述的方法,其特征在于,所述定义抽象接口,并让合约类开放其被调用的时机包括:初始化合约实例,并传入合约执行的上下文;调用合约方法,传入合约数据并返回执行结果。6.一种基于S...
【专利技术属性】
技术研发人员:陈胜,蒋步云,
申请(专利权)人:北京连琪科技有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。