交易参数设置问题

请问一些,这种参数是怎么设置进去的,java-sdk是通过什么接口?
目前,我这边这能看到Hex这个

这些不是你智能合约的参数吗?你调用合约的时候设进去啊。

那我需要上链的数据都是通过合约传进去吗?因为Hex里只能是二进制

哪些数据呢?能举个具体的例子,以及你的方案思路吗?

我们需要存证的数据,希望上链之后可以在浏览器里看到

希望通过交易上链,把需要的数据存在链上,目前看到的data字段好像都是二进制的,所以不知道系统的交易数据怎么传到链上

@ChenYu, 你知道他上面的数据是哪里来的吗?

你们测试浏览器上看到的,因为我测试上去的数据没有后面这一块,而且createContractTransaction的data或者init只能传二进制

@cipher 是不是之前咱们讨论的问题。和溯源需要做的改造类似。

这个是交易中的 data,把数据写在 data 里发送交易就好了。交易入链以后,通过TxId可以在microscope 里面看到交易内容,也就是data。

目前调用createContractTransaction看到的data好像都是要求二进制的,也就是链上Hex部分,传文本信息会报错,是还有通过其他接口调用的吗?

把文本转化为十六进制的形式,然后在调用这个函数的时候使用String就可以了。

这样上链之后可以直接看到上传的文本吗?

文本转16进制上链报这个错

@DuanYangyang 看一下?

createContractTransaction 当然只能传二进制了。
图里面应该是调用合约的参数展示,你需要定义一个接受多个参数的合约,然后调用它。

我觉得上面 cipher 提到的多参数合约是一种方式,还有一种方式需要将这些数据按 json 格式组织好,然后转化成十六进制数据,然后将这个十六进制作为合约方法参数(例如合约方法: void save(string param))。

交易中的 data 是合约方法加合约参数拼接成的十六进制数据,最终查看数据时需要调用相应的查询方法(例如合约方法: string get())。

也就是说这个存证的场景需要先编写一个拥有存数据和取数据的智能合约,然后真正的存储数据是调用存储数据的合约方法,然后再调用取数据的合约方法获取数据。

如果发了一笔调用获取数据的交易,返回值就是上文提到的十六进制数据,然后再转换成 string 格式的数据,就是 Json 数据了。

谢谢,之前应该是传的格式的问题,不是json,直接通过文本的方式,所以没有解析出来