您现在的位置是:首页 >技术教程 >区块链智能合约开发学习网站首页技术教程
区块链智能合约开发学习
                简介区块链智能合约开发学习            
            最近正在肝区块链知识学习,入手学习智能合约的开发,由于网上资料实在是太少了,好不容易东拼西凑完成了智能合约的开发、编译、部署、web3js调用(网页页面)和web3j调用(java调用),赶紧趁热把重点提炼出来。
先上图,是我最近学习知识点的一个概括总结,此外还包含了关键命令和操作步骤。

我智能合约开发的技术选型是Solidity+web3j+Java,工具选型是VSCode+solcjs+web3js+web3j+Ganache
开发智能合约的关键步骤:
-  
  
-  
开发语言
- 90.4%用Solidity,7.2%用Vyper其他小众语言可忽略,因此开发智能合约主流选用Solidity,这也是我学习语言
 
 -  
合约开发环境必备
- nodejs(其他所有前置)
 - vscode
 - vscode的Solidity插件
 - ganache的appx或ganache-cli 
      
- 提供测试网络,部署合约必要
 
 - vscode的solcjs插件,用于命令行将.sol编译出.abi和.bin,web3j前一步必要动作,输出后的俩文件使用web3j生成.java
 - web3j工具(.bat执行一次即可,用于生成java可以调用的合约代码) 
      
- web3j此外还可以创建钱包,执行web3j create 命令按帮助指引
 
 - truffle(npm安装,用于编译运行智能合约)
 - metamask的chrome浏览器插件,用于浏览器钱包功能,当web客户端“写操作”时需调用有钱钱包
 
 -  
客户端准备
- web客户端(Vue项目) 
      
- web3.js脚本引用,用于提供web3访问接口
 - abi.js存放合约abi内容,用于提供合约接口
 
 - java客户端(SpringBoot或其他后台项目) 
      
- pom依赖引用:org.web3j,junit
 - XX.java合约java版代码
 
 - 客户单可以执行的操作 
      
- 合约的部署或加载已有合约,合约调用,读操作,写操作(写操作与读不同,需要关联有钱的钱包)
 
 
 - web客户端(Vue项目) 
      
 -  
开发命令
- 创建合约 
      
- VSCODE命令行:在工程空目录当前执行truffle init,即可初始化项目应有文件夹目录
 - VSCODE命令行:truffle create contract hello,创建一个hello.sol的合约文件
 
 - 编译 
      
- VSCODE命令行:truffle compile
 
 - 部署 
      
- VSCODE命令行:truffle migrate
 
 - 访问合约 
      
- 命令行方式:VSCODE命令行:truffle consolelet h=await hello.deployed()h.sayHello()h.addRecord("hh")h.getRecord()
 - java后端方式 
        
- 在vscode控制台.sol所在目录执行:solcjs --bin --abi hello.sol -o ./
 - 在sol所在目录打开cmd,执行(执行前本目录会有.bin和.abi两个文件)web3j solidity generate --javaTypes hello_sol_hello.bin hello_sol_hello.abi -o ./ -p com.test
 - 将sol同目录的java代码拷贝到java工程中即可进行合约调用
 - 初始化代码:配置好合约地址contract address和钱包秘钥(钱包秘钥用ganache中提供的测试账号小钥匙秘钥串即可用)
 
 - vue前端方式 
        
- 引用文件web3.js,abi.js(abi.js内容为合约abi内容是一个json文本段)
 - 添加包web3
 
 
 
 - 创建合约 
      
 -  
环境安装命令
- truffle 
      
- npm install -g truffle
 
 - web3j 
      
- 运行web3j.bat文件后命令行可跑 web3j XXX命令
 
 
 - truffle 
      
 
 -  
 
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。
        
    
        
    
            




U8W/U8W-Mini使用与常见问题解决
QT多线程的5种用法,通过使用线程解决UI主界面的耗时操作代码,防止界面卡死。...
stm32使用HAL库配置串口中断收发数据(保姆级教程)
分享几个国内免费的ChatGPT镜像网址(亲测有效)
Allegro16.6差分等长设置及走线总结