上链报错

这样的数据格式


这样的正常

能描述得清楚一些吗?
这是哪个组件的,做了哪些操作出错了,以及期望是什么。

通过java sdk调用交易接口,发现数据格式不对,就会报不同的错,有时候会报配额不足,有时候报上面的这个,不知道对数据格式有什么具体的要求

需求是希望将我们数据库中的比如用户数据上传到链上,查出来是一个对象,好像不能直接设置到data,转成16进制后也会报错

配额不足,是因为你的数据太大,所设置的交易 quota limit 太小导致的,只要把交易的quota limit 设大就可以了。

数据格式的问题,我记得你在下面的贴子问过,不知最后结果如何?
交易参数设置问题

我之前是直接用map转成string再转16进制,这种方式是可以显示的,


但是今天发现,多加了几条信息就报错了

所以想确定一下,对数据格式这些有没有具体的要求或者相应的demo,担心后面上线后会有一些不了解的情况导致报错

还有这种错,不知道是什么原因导致的

EVM 的调用栈用完了。可能是合约写得有点问题,能把你的合约发出来看一下吗?

我没有自己写合约,用的是sdk里面的测试接口,调用的应该是默认的合约吧

调的是哪个接口?然后你是怎么调用的?

这个是测试接口里的调用,我是把里面的data换成自己的数据了

再往下一点,下面调用的是哪个合约?

这个是在InterfaceTest这个对象里,我用这个测试发现中文好像上链好像没法解析出来

加一点中文就这样了

不这个中文改成英文能解析出来

解析数据格式是链下的事情,跟数据是否上链没有关系,区块链保证的是数据上链时是什么样子,取到时还是什么样子,建议你检查一下解析数据的方法。

通过什么样的数据结构上链,或者调用哪个接口可以实现这种方式的上链,可以看到一定的明文?

只要是经过 utf8 转 hex 的数据都可以上链,不过上链数据的大小应该会有上限,比如上传一部 1G 的电子书数据肯定是会失败的。

谢谢,utf8格式上链目前没有问题了,不过上传后显示的效果是这样的

调用的是这个接口

我想知道的是怎么样可以实现上面那种效果,有一个parameters

请问第一幅图中的 data 是如何得到的?单看代码你只是把结构化的数据放到了合约的构造方法中,而且这一步只是部署一个合约,那么我就不是很理解你是如何确定你拿到的 data 就是你想要的哪个值

你可能还没有弄明白 用户数据上链 这个动作,需要完成哪些工作。

我现在假设这里所谈的 用户数据 是结构化的数据,你可能需要:

  • 设计一个智能合约,用户接收你所上传的数据,然后把这些数据写入对应用的帐户(当然这个数据结构由你来定)中;至少包含两个接口,例如:
function setData(id, car_license, ...) {
   ...
}

function getData(id, car_license, ...) {
   ...
}
  • 部署智能合约到链上;

  • DApp 使用 SDK 调用你所部署的智能合约接口,将数据传给你的智能合约。例如:

setData(id, car_license, ...)
  • DApp 在展示数据时,通过智能合约的 getData 接口获得数据,然后将数据展现。

注意:

  • 在整个过程中,数据格式的转化/解析是由你来定的,对于链来说,只是存了一段 二进制 的东西而矣。

  • 在设计智能合约接口时,其参数大小是有限制的 (当前限制是 1024 * U256)。因此,如果你的数据很大,就会有栈溢出的可能,建议将数据的 hash 上链,而不是所有数据。

如果你对 DApp 还有困惑,建议你先仔细研究一下:

谢谢!

1赞