dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
<properties>
<project.libs>${project.basedir}/libs</project.libs>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>com.uracle.hecate.client</groupId>
<artifactId>com.uracle.hecate.client</artifactId>
<version>1.3.0</version>
<scope>system</scope>
<systemPath>${project.libs}/hecate-connector-client-v1.3.0.jar</systemPath>
</dependency>
</dependencies>
// Rest API 요청할 인스턴스 생성
RestHelper rt = new RestHelper.Builder(url)
.setHttpMethod(HttpMethodType.POST)
.build();
// 이더리움 제안서 생성
EthConnectorProposal proposal = new EthConnectorProposal();
proposal.setSmartContract(SMARTCONTRACT); // 스마트컨트랙트 주소
proposal.setWalletAddress(WALLET_ADDRESS); // 지갑 주소
proposal.setFuncName(FUNCNAME); // 호출 할 스마트 컨트랙트 메소드명
proposal.setRawData(RAWDATA); // 전달 할 파라미터 값
// 데이터 조회 요청 및 응답 데이터
String result = rt.transfer(proposal).receive();
// Rest API 요청할 인스턴스 생성
RestHelper rt = new RestHelper.Builder(url)
.setHttpMethod(HttpMethodType.POST)
.build();
// 이더리움 제안서 생성
EthConnectorProposal proposal = new EthConnectorProposal();
proposal.setSmartContract(SMARTCONTRACT); // 스마트컨트랙트 주소
proposal.setWalletAddress(WALLET_ADDRESS); // 지갑 주소
proposal.setFuncName(FUNCNAME); // 호출 할 스마트 컨트랙트 메소드명
final String bcKey= "did:hecate:nex:2182e239888d6afc61bd0d677b58b0443bea3ffdA1";
final String bcValue = "DID Document";
final String didTimestamp = "1591851625";
LinkedTreeMap<String, Object> rawData = new LinkedTreeMap<String, Object>();
rawData.put("bcKey", bcKey);
rawData.put("bcValue", bcValue);
rawData.put("didTimestamp", didTimestamp);
proposal.setRawData(rawData); // 전달 할 파라미터 값
// 데이터 저장 또는 업데이트 요청 및 응답 데이터
String result = rt.transfer(proposal).receive();
// Rest API 요청할 인스턴스 생성
RestHelper rt = new RestHelper.Builder(url)
.setHttpMethod(HttpMethodType.GET)
.build();
// 거래(트랜잭션) 영수증 조회 응답 데이터
String result = rt.transfer().receive();
// Rest API 요청할 인스턴스 생성
RestHelper rt = new RestHelper.Builder(url)
.setHttpMethod(HttpMethodType.GET)
.build();
// Wallet 발급 응답 데이터
String result = rt.transfer().receive();
사용 가능한 버전 1.3.2이상
final String REST_API_NONCE_UPDATE = "/bc/eth/wallet/0xa6eb7e9e4c3a8745c3f68c2443a1630a938adf0a/nonce";
String result = null;
String url = CommonUtil.generateUrl(ROOT_URI, REST_API_NONCE_UPDATE);
RestHelper rt = null;
// Rest API 요청할 인스턴스 생성
RestHelper rt = new RestHelper
.Builder(url)
.setHttpMethod(HttpMethodType.PATCH)
.build();
// 데이터 저장 또는 업데이트 요청 및 응답 데이터
result = rt.transfer().receive();
// Rest API 요청할 인스턴스 생성
RestHelper rt = new RestHelper.Builder(url)
.setHttpMethod(HttpMethodType.GET)
.build();
// 블록 가스 한도 조회 응답 데이터
String result = rt.transfer().receive();
// Rest API 요청할 인스턴스 생성
RestHelper rt = new RestHelper.Builder(url)
.setHttpMethod(HttpMethodType.GET)
.build();
// 블록 가스 비용 조회 응답 데이터
String result = rt.transfer().receive();
// Rest API 요청할 인스턴스 생성
RestHelper rt = new RestHelper.Builder(url)
.setHttpMethod(HttpMethodType.GET)
.build();
// 최신 블록 조회 응답 데이터
String result = rt.transfer().receive();
String url = CommonUtil.generateUrl(ROOT_URI, REST_API_BLOCK_SPECIFIC).concat("/" + BLOCKNUMBER);
RestHelper rt = null;
try {
// Rest API 요청할 인스턴스 생성
rt = new RestHelper
.Builder(url)
.setHttpMethod(HttpMethodType.GET)
.build();
// 블록 조회 응답 데이터
String result = rt.transfer().receive();
}
...
// Rest API 요청할 인스턴스 생성
RestHelper rt = new RestHelper.Builder(url)
.setHttpMethod(HttpMethodType.POST)
.build();
// ChainZ API에 요청할URL
String endPointUrl = "https://iam.chainz.biz/auth/realms/chainz/protocol/openid-connect/token";
// ChainZ API에서 요구하는 헤더 속성
Map<String, String> header = new HashMap<String, String>();
header.put("Authorization", "Basic Q0FTQ1NLTlYzSDNXNFFSSVFCRlZGRVJIOjdkMjgzOTAyLTZhN2MtNDM5NC1iMjExLTQ4ZmRmMzc1NTE4ZA==");
// ChainZ API에서 요구하는 Raw Data
JsonPrimitive body = new JsonPrimitive("grant_type=client_credentials");
// ChainZ API에서 요구하는 Http Method Type
HttpMethodType methodType = HttpMethodType.POST;
ChainZProposal proposal = new ChainZProposal(header, endPointUrl, body, methodType);
// ChainZ 토큰 발급 응답 데이터
String result = rt.transfer(proposal).receive();
Map<String, Object> resultMap = gson.fromJson(result, Map.class);
// Rest API 요청할 인스턴스 생성
RestHelper rt = new RestHelper.Builder(url)
.setHttpMethod(HttpMethodType.POST)
.build();
// ChainZ API에 요청할URL
String endPointUrl = "https://account-api.chainz.biz/api/v1/accounts";
// ChainZ API에서 요구하는 헤더 속성
Map<String, String> header = new HashMap<String, String>();
header.put("accept", "application/json");
String authorization = "Bearer ".concat(accessToken);
header.put("Authorization", authorization);
header.put("x-api-key", "mNxPlM9BZr46ebpazqvdC3uaU1Ixu9yj3bJw3s8i");
header.put("Content-Type", "application/json");
// ChainZ API에서 요구하는 Raw Data
JsonObject body = new JsonObject();
body.addProperty("userId", "leehyunho");
body.addProperty("chainId", "8768cb29-2417-4281-84b1-924b82ebb720");
// ChainZ API에서 요구하는 Http Method Type
HttpMethodType methodType = HttpMethodType.POST;
ChainZProposal proposal = new ChainZProposal(header, endPointUrl, body, methodType);
// ChainZ 계정 생성 응답 데이터
result = rt.transfer(proposal).receive();
Gson gson = GsonInitializer.getInstance().getGson();
// Json Serialize
EthConnectorProposal proposal = new EthConnectorProposal();
proposal.setSmartContract("ethereum smartcontract");
proposal.setFuncName("hello world");
proposal.setRawData("This is Sample Data!");
String jsonProposal = gson.toJson(proposal);
System.out.println(jsonProposal);
// Json Deserialize
EthConnectorProposal deProposal = gson.fromJson(jsonProposal, EthConnectorProposal.class);
Truffle Framework를 이용하여 compile & deploy하게 되었을 시 compile를 통하여 생성된 빌드 파일 중 상태변수가 존재하는 스마트 컨트랙트 파일(STEP1)을 아래의 이미지 Step2와 같이 수정하여 HECATE CONNECTOR API 담당자에게 전달 또는 헤카테 커넥터에 업데이트 진행한다.
STEP1