公司目前需求是上链后的数据可以在浏览器查看
通过java-sdk SimpleDataExample部署合约的接口,目前使用这种方式上链已经可以了,不过因为创建合约的接口对数据做了这样的处理
String init = contractCode + cleanHexPrefix(constructorCode); 导致上传的数据在浏览器上只显示了Hex,没有办法显示UTF-8或者其他格式,不知道有没有其他处理办法?
公司目前需求是上链后的数据可以在浏览器查看
通过java-sdk SimpleDataExample部署合约的接口,目前使用这种方式上链已经可以了,不过因为创建合约的接口对数据做了这样的处理
String init = contractCode + cleanHexPrefix(constructorCode); 导致上传的数据在浏览器上只显示了Hex,没有办法显示UTF-8或者其他格式,不知道有没有其他处理办法?
你意思是在 microscope 里显示吗?
还是你们基于 JDK 重新开发了应用?
在microscope上展示,调用其他的几个部署合约的接口是可以的,但是获取data后解密比较麻烦,通过自己的生成的合约在microscope上好像只能展示Hex这一种格式,我看是加了String init = contractCode + cleanHexPrefix(constructorCode)这一行代码导致的
我一直没有太想明白,咱们这个上链数据是什么?然后上到哪里?
不知你有没有看过我之前回的这个 talk :
看完后,能把你的场景和想要的结果描述清楚吗?
想要的结果很简单
一、是数据存证,比如通过交易的方式使数据上链,目前sdk我看到几种方式,比如SimpleDataExample自定义合约的方式
二、希望上链之后可以在microscope上看到一些简要信息,不仅仅是Hex信息
我来理解一下:
pragma solidity ^0.4.24;
contract SimpleData {
uint256 public userId;
bytes public userName;
string public userDesc;
address public userAddr;
constructor(uint256 number, bytes name, string desc, address addr)
public
{
userId = number;
userName = name;
userDesc = desc;
userAddr = addr;
}
}
实际上是把一些合约的数据在创建合约时,通过它的构造接口带进来。这意味着你有多少份数据就要部署多少个合约。
是的,目前来看,自定义合约的方式好像无法显示这个效果,不知道有没有其他办法
首先,得先了解一下这里 parameters
解析的原理是什么?
获取调用合约的交易参数;实际上就是获得合约函数的入口参数,就是上面所显示的 Hex
内容;
从链上获取这个合约的 abi
信息,这个 abi
包括了上 1 中的参数个数与类型描述。
根据 1, 2 将上图中的 Hex
解析成 Parameters
显示形式。
因此,我上面描述的:
达成不了这个目标,你需要:
function setData(id, car_license, ...) {
...
}
将合约的 abi
一同上传到链上;
通过交易调用合约的 setData
接口。
这样你就可以在浏览器上看到解析后的数据了。
不知道我有没有解释清楚?你可以先尝试一下。
谢谢,java-sdk有没有相关的demo可以参考一下
可以参考这个合约,参数通过 set 设置,通过 get 获取,构造方法可以不用,当调用 set 合约方法时,data 就可以在 microscope 上看到 json 数据了
@chenpeng 如果您遇到问题与该帖情况相同,那还有一个解决方案, 通过上传 ABI 文件:
这是 microscope 本身就有的功能,目前最新版本是 microscope-v2,也具有该功能,GitHub 链接:https://github.com/cryptape/microscope-v2
如上述方案都不能解决您的问题,请具体描述下您的应用场景及问题~