代码如下,使用 Java 8
package org.springblade.evidence.controller;
import com.citahub.cita.protocol.CITAj;
import com.citahub.cita.protocol.core.DefaultBlockParameter;
import com.citahub.cita.protocol.core.methods.request.Transaction;
import com.citahub.cita.protocol.core.methods.response.AppMetaData;
import com.citahub.cita.protocol.core.methods.response.AppSendTransaction;
import com.citahub.cita.protocol.http.HttpService;
import lombok.AllArgsConstructor;
import org.apache.commons.codec.binary.Hex;
import org.springblade.core.tool.api.R;
import org.springblade.evidence.entity.Evidence;
import org.springblade.evidence.service.EvidenceService;
import org.springframework.web.bind.annotation.*;
import java.nio.charset.StandardCharsets;
import java.io.IOException;
import java.math.BigInteger;
import java.util.Random;
/**
* EvidenceController
*
* @author futingfei
*/
@RestController
@RequestMapping("evidence")
@AllArgsConstructor
public class EvidenceController {
private EvidenceService service;
@PostMapping("/upload")
public R upload(@RequestBody Evidence evidence) throws IOException {
CITAj citaService = CITAj.build(new HttpService("http://101.132.38.100:1337"));
// String to = "0xffffffffffffffffffffffffffffffffff010000";
Random r = new Random();
String nonce = String.valueOf(Math.abs(r.nextLong()));
AppMetaData appMetaData;
appMetaData = citaService.appMetaData(DefaultBlockParameter.valueOf("latest")).send();
long currentHeight = citaService.appBlockNumber().send().getBlockNumber().longValue();
long validUntilBlock = currentHeight + 80;
long quota = 1000000000;
int version = appMetaData.getAppMetaDataResult().getVersion();
BigInteger chainId = BigInteger.valueOf(1);
String value = "0";
String dataS = "evidence="+evidence.getEvidence()+"×tamp"+evidence.getTimestamp();
String data = String.valueOf(Hex.encodeHex(dataS.getBytes(StandardCharsets.UTF_8)));
Transaction tx = Transaction.createContractTransaction(nonce, quota, validUntilBlock, version, chainId, value, data);
String privateKey = "0x4e9baac008595db208b06e4c05f715c4c25ee18089ff4766d7c79742f2449f45";
String rawTx = tx.sign(privateKey);
AppSendTransaction result = citaService.appSendRawTransaction(rawTx).send();
return R.status(service.save(evidence));
}
@GetMapping("/query")
public R<Evidence> query(Long id) {
Evidence res = service.getById(id);
return R.data(res);
}
}
报错截图为
本以为是 quota 不够大,但是设置到 long 类型的最大值之后依然报错。
可以麻烦帮我看一下吗?