使用WeBASE开发区块链应用

部署WeBASE

搭建WeBASE, 请参考快速部署

登录WeBASE管理平台进行配置

安装WeBASE完成后,需要将节点信息添加到WeBASE平台中,这样WeBASE才可和节点进行通信。需要添加的信息包含节点信息,生成用户的私钥等。如下图所示:

  • 节点信息: ../../_images/frontInfo.png[节点]
  • 私钥用户: ../../_images/keyUser.png[私钥用户]

开发智能合约

以HelloWorld.sol为例

  1. pragma solidity ^0.4.2;
  2. contract HelloWorld{
  3. string name;
  4. function HelloWorld(){
  5. name = "Hello, World!";
  6. }
  7. function get()constant returns(string){
  8. return name;
  9. }
  10. function set(string n){
  11. name = n;
  12. }
  13. }
  • 通过智能合约IDE部署合约,并获取合约地址等信息, ../../_images/contract1.png[合约]

应用层开发

  • 调用交易接口

请参考交易接口

从IDE中的输出信息,拷贝合约地址,合约名,方法名等信息,同时获取用户的公钥地址信息,调用交易接口。 具体代码请参考 HelloWorld范例

  • 主要代码
  1. application.yml
  2. transactionUrl: http://127.0.0.1:5002/WeBASE-Front/trans/handle
  3. groupId: 1
  4. userAddress: "0x4f08eac5af5e77b7006d11bee94adba2f721def8"
  5. useAes: true
  6. contract.name: HelloWorld
  7. contract.address: "0xca597170829f4ad5054b618425a56e0be23cbc55"
  8. contract.funcName: set
  9. contract.funcParam: "[\"abc\"]"
  • TransactionService.java
  1. @Slf4j
  2. @Data
  3. @Service
  4. public class TransactionService {
  5. @Autowired
  6. private RestTemplate rest;
  7. @Value("${transactionUrl}")
  8. private String url;
  9. @Value("${userAddress}")
  10. private String user;
  11. @Value("${groupId}")
  12. private int groupId;
  13. @Value("${useAes}")
  14. private Boolean useAes;
  15. @Value("${contract.name}")
  16. private String contractName;
  17. @Value("${contract.address}")
  18. private String contractAddress;
  19. @Value("${contract.funcName}")
  20. private String funcName;
  21. @Value("${contract.funcParam}")
  22. private String funcParam;
  23. public void sendTransaction() {
  24. try {
  25. TransactionParam transParam = new TransactionParam();
  26. transParam.setGroupId(groupId);
  27. transParam.setContractAddress(contractAddress);
  28. transParam.setUseAes(useAes);
  29. transParam.setUser(user);
  30. transParam.setContractName(contractName);
  31. transParam.setFuncName(funcName);
  32. transParam.setFuncParam(JSONArray.parseArray(funcParam));
  33. log.info("transaction param:{}", JSON.toJSONString(transParam));
  34. Object rsp = rest.postForObject(url, transParam, Object.class);
  35. String rspStr = "null";
  36. if (Objects.nonNull(rsp)) {
  37. rspStr = JSON.toJSONString(rsp);
  38. }
  39. log.info("transaction result:{}", rspStr);
  40. } catch (Exception ex) {
  41. log.error("fail sendTransaction", ex);
  42. }
  43. System.exit(1);
  44. }
  45. }

运维管理

应用层发布后,持续发送交易,可在WeBASE管理平台查看数据概览,节点监控,查看交易解析,交易审计等管理功能。

  • 查看交易解析 ../../_images/transHash.png[交易解析]