| @@ -3,23 +3,23 @@ | |||
| <dependency> | |||
| <groupId>com.jd.blockchain</groupId> | |||
| <artifactId>sdk-client</artifactId> | |||
| <version>1.3.0.RELEASE</version> | |||
| <version>1.4.0.RELEASE</version> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>com.jd.blockchain</groupId> | |||
| <artifactId>contract-starter</artifactId> | |||
| <version>1.3.0.RELEASE</version> | |||
| <version>1.4.0.RELEASE</version> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>com.jd.blockchain</groupId> | |||
| <artifactId>crypto-classic</artifactId> | |||
| <version>1.3.0.RELEASE</version> | |||
| <version>1.4.0.RELEASE</version> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>com.jd.blockchain</groupId> | |||
| <artifactId>crypto-sm</artifactId> | |||
| <version>1.3.0.RELEASE</version> | |||
| <version>1.4.0.RELEASE</version> | |||
| </dependency> | |||
| ``` | |||
| # 2. 数据快速上链 | |||
| @@ -1,6 +1,6 @@ | |||
| # JDChain安装部署指南 | |||
| 本部署指南基于JDChain1.3.0.RELEASE版本来构建。 | |||
| 本部署指南基于JDChain1.4.0.RELEASE版本来构建。 | |||
| ## 1. 部署环境 | |||
| ### 1.1 系统部署结构 | |||
|  | |||
| @@ -6,7 +6,7 @@ | |||
| <parent> | |||
| <groupId>com.jd.blockchain</groupId> | |||
| <artifactId>jdchain-samples</artifactId> | |||
| <version>1.2.1.RELEASE</version> | |||
| <version>1.4.0.RELEASE</version> | |||
| </parent> | |||
| <artifactId>contract-samples</artifactId> | |||
| @@ -11,11 +11,11 @@ | |||
| <groupId>com.jd.blockchain</groupId> | |||
| <artifactId>jdchain-samples</artifactId> | |||
| <version>1.2.1.RELEASE</version> | |||
| <version>1.4.0.RELEASE</version> | |||
| <packaging>pom</packaging> | |||
| <properties> | |||
| <framework.version>1.3.0.RELEASE</framework.version> | |||
| <framework.version>1.4.0.RELEASE</framework.version> | |||
| </properties> | |||
| <modules> | |||
| @@ -42,6 +42,21 @@ | |||
| <artifactId>crypto-framework</artifactId> | |||
| <version>${framework.version}</version> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>com.jd.blockchain</groupId> | |||
| <artifactId>crypto-classic</artifactId> | |||
| <version>${framework.version}</version> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>com.jd.blockchain</groupId> | |||
| <artifactId>crypto-sm</artifactId> | |||
| <version>${framework.version}</version> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>com.jd.blockchain</groupId> | |||
| <artifactId>crypto-base</artifactId> | |||
| <version>${framework.version}</version> | |||
| </dependency> | |||
| </dependencies> | |||
| </dependencyManagement> | |||
| @@ -5,7 +5,7 @@ | |||
| <parent> | |||
| <groupId>com.jd.blockchain</groupId> | |||
| <artifactId>jdchain-samples</artifactId> | |||
| <version>1.2.1.RELEASE</version> | |||
| <version>1.4.0.RELEASE</version> | |||
| </parent> | |||
| <artifactId>sdk-samples</artifactId> | |||
| @@ -23,6 +23,31 @@ | |||
| <artifactId>contract-samples</artifactId> | |||
| <version>${project.version}</version> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>com.jd.blockchain</groupId> | |||
| <artifactId>crypto-base</artifactId> | |||
| <version>1.4.0.RELEASE</version> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>com.jd.blockchain</groupId> | |||
| <artifactId>crypto-framework</artifactId> | |||
| <version>${framework.version}</version> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>com.jd.blockchain</groupId> | |||
| <artifactId>crypto-classic</artifactId> | |||
| <version>${framework.version}</version> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>com.jd.blockchain</groupId> | |||
| <artifactId>crypto-sm</artifactId> | |||
| <version>${framework.version}</version> | |||
| </dependency> | |||
| <dependency> | |||
| <groupId>com.jd.blockchain</groupId> | |||
| <artifactId>crypto-utils-classic</artifactId> | |||
| <version>${framework.version}</version> | |||
| </dependency> | |||
| </dependencies> | |||
| <build> | |||
| @@ -38,10 +38,7 @@ public class SDKDemo_ConfigureSecurity { | |||
| // 注册相关class | |||
| DataContractRegistry.register(TransactionContent.class); | |||
| DataContractRegistry.register(TransactionContentBody.class); | |||
| DataContractRegistry.register(TransactionRequest.class); | |||
| DataContractRegistry.register(NodeRequest.class); | |||
| DataContractRegistry.register(EndpointRequest.class); | |||
| DataContractRegistry.register(TransactionResponse.class); | |||
| PrivKey privKey = SDKDemo_Params.privkey1; | |||
| @@ -64,7 +64,7 @@ public class SDKDemo_InsertData { | |||
| // TX 准备就绪; | |||
| PreparedTransaction prepTx = txTemp.prepare(); | |||
| String txHash = ByteArray.toBase64(prepTx.getHash().toBytes()); | |||
| String txHash = ByteArray.toBase64(prepTx.getTransactionHash().toBytes()); | |||
| // 使用私钥进行签名; | |||
| AsymmetricKeypair keyPair = getSponsorKey(); | |||
| @@ -7,7 +7,6 @@ import com.jd.blockchain.ledger.BlockchainKeypair; | |||
| import com.jd.blockchain.ledger.TypedKVEntry; | |||
| import com.jd.blockchain.ledger.LedgerBlock; | |||
| import com.jd.blockchain.ledger.LedgerTransaction; | |||
| import com.jd.blockchain.ledger.Transaction; | |||
| import com.jd.blockchain.sdk.BlockchainService; | |||
| import com.jd.blockchain.sdk.client.GatewayServiceFactory; | |||
| import com.jd.blockchain.utils.net.NetworkAddress; | |||
| @@ -61,8 +60,8 @@ public class SDKDemo_Query { | |||
| LedgerTransaction[] txList = service.getTransactions(LEDGER_HASH, ledgerNumber, 0, 100); | |||
| // 根据交易的 hash 获得交易;注:客户端生成 PrepareTransaction 时得到交易hash; | |||
| HashDigest txHash = txList[0].getTransactionContent().getHash(); | |||
| Transaction tx = service.getTransactionByContentHash(LEDGER_HASH, txHash); | |||
| HashDigest txHash = txList[0].getRequest().getTransactionHash(); | |||
| LedgerTransaction tx = service.getTransactionByContentHash(LEDGER_HASH, txHash); | |||
| // 获取数据; | |||
| String commerceAccount = "GGhhreGeasdfasfUUfehf9932lkae99ds66jf=="; | |||
| @@ -44,10 +44,7 @@ public class SDKDemo_RegistParticipant { | |||
| service = serviceFactory.getBlockchainService(); | |||
| DataContractRegistry.register(TransactionContent.class); | |||
| DataContractRegistry.register(TransactionContentBody.class); | |||
| DataContractRegistry.register(TransactionRequest.class); | |||
| DataContractRegistry.register(NodeRequest.class); | |||
| DataContractRegistry.register(EndpointRequest.class); | |||
| DataContractRegistry.register(TransactionResponse.class); | |||
| DataContractRegistry.register(ParticipantRegisterOperation.class); | |||
| DataContractRegistry.register(ParticipantStateUpdateOperation.class); | |||
| @@ -20,10 +20,7 @@ public class SDKDemo_RegisterAccount { | |||
| } | |||
| DataContractRegistry.register(TransactionContent.class); | |||
| DataContractRegistry.register(TransactionContentBody.class); | |||
| DataContractRegistry.register(TransactionRequest.class); | |||
| DataContractRegistry.register(NodeRequest.class); | |||
| DataContractRegistry.register(EndpointRequest.class); | |||
| DataContractRegistry.register(TransactionResponse.class); | |||
| BlockchainKeypair CLIENT_CERT = new BlockchainKeypair(SDKDemo_Params.pubKey0, SDKDemo_Params.privkey0); | |||
| @@ -38,10 +38,7 @@ public class SDKDemo_RegisterUser { | |||
| // 注册相关class | |||
| DataContractRegistry.register(TransactionContent.class); | |||
| DataContractRegistry.register(TransactionContentBody.class); | |||
| DataContractRegistry.register(TransactionRequest.class); | |||
| DataContractRegistry.register(NodeRequest.class); | |||
| DataContractRegistry.register(EndpointRequest.class); | |||
| DataContractRegistry.register(TransactionResponse.class); | |||
| PrivKey privKey = SDKDemo_Params.privkey1; | |||
| @@ -40,10 +40,7 @@ public class SDKDemo_Tx_Persistance { | |||
| // 注册相关class | |||
| DataContractRegistry.register(TransactionContent.class); | |||
| DataContractRegistry.register(TransactionContentBody.class); | |||
| DataContractRegistry.register(TransactionRequest.class); | |||
| DataContractRegistry.register(NodeRequest.class); | |||
| DataContractRegistry.register(EndpointRequest.class); | |||
| DataContractRegistry.register(TransactionResponse.class); | |||
| PrivKey privKey1 = SDKDemo_Params.privkey0; | |||
| @@ -87,7 +84,7 @@ public class SDKDemo_Tx_Persistance { | |||
| TransactionContent txContent = BinaryProtocol.decode(txContentBytes, TransactionContent.class); | |||
| // 对交易内容签名; | |||
| DigitalSignature signature1 = SignatureUtils.sign(txContent, keyPair1); | |||
| DigitalSignature signature1 = SignatureUtils.sign(keyPair1.getAlgorithm(), txContent, keyPair1); | |||
| // 根据交易内容重新准备交易; | |||
| PreparedTransaction decodedPrepTx = blockchainService.prepareTransaction(txContent); | |||
| @@ -0,0 +1,42 @@ | |||
| package com.jd.blockchain.sdk.samples; | |||
| import com.jd.blockchain.ledger.PreparedTransaction; | |||
| import com.jd.blockchain.ledger.TransactionResponse; | |||
| import com.jd.blockchain.ledger.TransactionTemplate; | |||
| import com.jd.blockchain.utils.Property; | |||
| import java.util.ArrayList; | |||
| import java.util.List; | |||
| public class SDK_ConsensusSettings_Update_Demo extends SDK_Base_Demo { | |||
| public static void main(String[] args) { | |||
| new SDK_ConsensusSettings_Update_Demo().updateSettings(); | |||
| } | |||
| public void updateSettings() { | |||
| List<Property> properties = new ArrayList<Property>(); | |||
| // 修改bftsmart.conf配置文件中的选项; | |||
| properties.add(new Property("system.communication.useSenderThread", "false")); | |||
| Property[] propertiesArray = properties.toArray(new Property[properties.size()]); | |||
| TransactionTemplate txTpl = blockchainService.newTransaction(ledgerHash); | |||
| txTpl.settings().update(propertiesArray); | |||
| // TX 准备就绪; | |||
| PreparedTransaction prepTx = txTpl.prepare(); | |||
| // 使用私钥进行签名; | |||
| prepTx.sign(adminKey); | |||
| // 提交交易; | |||
| TransactionResponse transactionResponse = prepTx.commit(); | |||
| System.out.println(transactionResponse.isSuccess()); | |||
| } | |||
| } | |||
| @@ -48,7 +48,7 @@ public class SDK_InsertData_Demo extends SDK_Base_Demo { | |||
| LedgerTransaction[] txList = blockchainService.getTransactions(ledgerHash, ledgerNumber, 0, 100); | |||
| // 遍历交易列表 | |||
| for (LedgerTransaction ledgerTransaction : txList) { | |||
| TransactionContent txContent = ledgerTransaction.getTransactionContent(); | |||
| TransactionContent txContent = ledgerTransaction.getRequest().getTransactionContent(); | |||
| Operation[] operations = txContent.getOperations(); | |||
| if (operations != null && operations.length > 0) { | |||
| for (Operation operation : operations) { | |||
| @@ -101,7 +101,7 @@ public class SDK_InsertData_Demo extends SDK_Base_Demo { | |||
| } | |||
| //根据交易的 hash 获得交易;注:客户端生成 PrepareTransaction 时得到交易hash; | |||
| HashDigest txHash = txList[0].getTransactionContent().getHash(); | |||
| HashDigest txHash = txList[0].getRequest().getTransactionHash(); | |||
| // Transaction tx = blockchainService.getTransactionByContentHash(ledgerHash, txHash); | |||
| // String[] objKeys = new String[] { "x001", "x002" }; | |||
| // KVDataEntry[] kvData = blockchainService.getDataEntries(ledgerHash, commerceAccount, objKeys); | |||
| @@ -6,6 +6,8 @@ import java.io.File; | |||
| import java.io.FileInputStream; | |||
| import java.io.IOException; | |||
| import com.jd.blockchain.crypto.base.DefaultCryptoEncoding; | |||
| import com.jd.blockchain.crypto.base.HashDigestBytes; | |||
| import org.junit.Before; | |||
| import org.slf4j.Logger; | |||
| import org.slf4j.LoggerFactory; | |||
| @@ -286,7 +288,7 @@ public class SDK_Contract_Test { | |||
| // TX 准备就绪; | |||
| PreparedTransaction prepTx = txTemp.prepare(); | |||
| String txHash = ByteArray.toBase64(prepTx.getHash().toBytes()); | |||
| String txHash = ByteArray.toBase64(prepTx.getTransactionHash().toBytes()); | |||
| // 使用私钥进行签名; | |||
| AsymmetricKeypair keyPair = getSponsorKey(); | |||
| @@ -297,7 +299,7 @@ public class SDK_Contract_Test { | |||
| } | |||
| private static HashDigest getLedgerHash() { | |||
| return new HashDigest(Base58Utils.decode(ledgerAddress)); | |||
| return new HashDigestBytes(DefaultCryptoEncoding.decodeAlgorithm(Base58Utils.decode(ledgerAddress)), Base58Utils.decode(ledgerAddress)); | |||
| } | |||
| /** | |||
| @@ -10,6 +10,8 @@ package test.com.jd.blockchain.sdk.test; | |||
| import static org.junit.Assert.assertEquals; | |||
| import com.jd.blockchain.crypto.base.DefaultCryptoEncoding; | |||
| import com.jd.blockchain.crypto.base.HashDigestBytes; | |||
| import org.junit.Before; | |||
| import org.junit.Test; | |||
| @@ -21,11 +23,8 @@ import com.jd.blockchain.crypto.HashFunction; | |||
| import com.jd.blockchain.crypto.SignatureFunction; | |||
| import com.jd.blockchain.ledger.BlockchainKeyGenerator; | |||
| import com.jd.blockchain.ledger.BlockchainKeypair; | |||
| import com.jd.blockchain.ledger.EndpointRequest; | |||
| import com.jd.blockchain.ledger.NodeRequest; | |||
| import com.jd.blockchain.ledger.PreparedTransaction; | |||
| import com.jd.blockchain.ledger.TransactionContent; | |||
| import com.jd.blockchain.ledger.TransactionContentBody; | |||
| import com.jd.blockchain.ledger.TransactionRequest; | |||
| import com.jd.blockchain.ledger.TransactionResponse; | |||
| import com.jd.blockchain.ledger.TransactionState; | |||
| @@ -68,10 +67,7 @@ public class SDK_GateWay_BatchInsertData_Test_ { | |||
| service = serviceFactory.getBlockchainService(); | |||
| DataContractRegistry.register(TransactionContent.class); | |||
| DataContractRegistry.register(TransactionContentBody.class); | |||
| DataContractRegistry.register(TransactionRequest.class); | |||
| DataContractRegistry.register(NodeRequest.class); | |||
| DataContractRegistry.register(EndpointRequest.class); | |||
| DataContractRegistry.register(TransactionResponse.class); | |||
| } | |||
| @@ -118,8 +114,7 @@ public class SDK_GateWay_BatchInsertData_Test_ { | |||
| } | |||
| private HashDigest getLedgerHash() { | |||
| byte[] hashBytes = Base58Utils.decode(ledgerHash); | |||
| return new HashDigest(hashBytes); | |||
| return new HashDigestBytes(DefaultCryptoEncoding.decodeAlgorithm(Base58Utils.decode(ledgerHash)), Base58Utils.decode(ledgerHash)); | |||
| } | |||
| @@ -19,11 +19,8 @@ import com.jd.blockchain.crypto.HashFunction; | |||
| import com.jd.blockchain.crypto.SignatureFunction; | |||
| import com.jd.blockchain.ledger.BlockchainKeyGenerator; | |||
| import com.jd.blockchain.ledger.BlockchainKeypair; | |||
| import com.jd.blockchain.ledger.EndpointRequest; | |||
| import com.jd.blockchain.ledger.NodeRequest; | |||
| import com.jd.blockchain.ledger.PreparedTransaction; | |||
| import com.jd.blockchain.ledger.TransactionContent; | |||
| import com.jd.blockchain.ledger.TransactionContentBody; | |||
| import com.jd.blockchain.ledger.TransactionRequest; | |||
| import com.jd.blockchain.ledger.TransactionResponse; | |||
| import com.jd.blockchain.ledger.TransactionState; | |||
| @@ -62,10 +59,7 @@ public class SDK_GateWay_DataAccount_Test_ { | |||
| service = serviceFactory.getBlockchainService(); | |||
| DataContractRegistry.register(TransactionContent.class); | |||
| DataContractRegistry.register(TransactionContentBody.class); | |||
| DataContractRegistry.register(TransactionRequest.class); | |||
| DataContractRegistry.register(NodeRequest.class); | |||
| DataContractRegistry.register(EndpointRequest.class); | |||
| DataContractRegistry.register(TransactionResponse.class); | |||
| } | |||
| @@ -21,11 +21,8 @@ import com.jd.blockchain.crypto.HashFunction; | |||
| import com.jd.blockchain.crypto.SignatureFunction; | |||
| import com.jd.blockchain.ledger.BlockchainKeyGenerator; | |||
| import com.jd.blockchain.ledger.BlockchainKeypair; | |||
| import com.jd.blockchain.ledger.EndpointRequest; | |||
| import com.jd.blockchain.ledger.NodeRequest; | |||
| import com.jd.blockchain.ledger.PreparedTransaction; | |||
| import com.jd.blockchain.ledger.TransactionContent; | |||
| import com.jd.blockchain.ledger.TransactionContentBody; | |||
| import com.jd.blockchain.ledger.TransactionRequest; | |||
| import com.jd.blockchain.ledger.TransactionResponse; | |||
| import com.jd.blockchain.ledger.TransactionState; | |||
| @@ -65,10 +62,7 @@ public class SDK_GateWay_InsertData_Test_ { | |||
| service = serviceFactory.getBlockchainService(); | |||
| DataContractRegistry.register(TransactionContent.class); | |||
| DataContractRegistry.register(TransactionContentBody.class); | |||
| DataContractRegistry.register(TransactionRequest.class); | |||
| DataContractRegistry.register(NodeRequest.class); | |||
| DataContractRegistry.register(EndpointRequest.class); | |||
| DataContractRegistry.register(TransactionResponse.class); | |||
| } | |||
| @@ -59,10 +59,7 @@ public class SDK_GateWay_Participant_Regist_Test_ { | |||
| service = serviceFactory.getBlockchainService(); | |||
| DataContractRegistry.register(TransactionContent.class); | |||
| DataContractRegistry.register(TransactionContentBody.class); | |||
| DataContractRegistry.register(TransactionRequest.class); | |||
| DataContractRegistry.register(NodeRequest.class); | |||
| DataContractRegistry.register(EndpointRequest.class); | |||
| DataContractRegistry.register(TransactionResponse.class); | |||
| DataContractRegistry.register(ParticipantRegisterOperation.class); | |||
| DataContractRegistry.register(ParticipantStateUpdateOperation.class); | |||
| @@ -23,16 +23,12 @@ import com.jd.blockchain.ledger.BlockchainIdentity; | |||
| import com.jd.blockchain.ledger.BlockchainKeyGenerator; | |||
| import com.jd.blockchain.ledger.BlockchainKeypair; | |||
| import com.jd.blockchain.ledger.DigitalSignature; | |||
| import com.jd.blockchain.ledger.EndpointRequest; | |||
| import com.jd.blockchain.ledger.TypedKVEntry; | |||
| import com.jd.blockchain.ledger.LedgerBlock; | |||
| import com.jd.blockchain.ledger.LedgerInfo; | |||
| import com.jd.blockchain.ledger.LedgerTransaction; | |||
| import com.jd.blockchain.ledger.NodeRequest; | |||
| import com.jd.blockchain.ledger.ParticipantNode; | |||
| import com.jd.blockchain.ledger.Transaction; | |||
| import com.jd.blockchain.ledger.TransactionContent; | |||
| import com.jd.blockchain.ledger.TransactionContentBody; | |||
| import com.jd.blockchain.ledger.TransactionRequest; | |||
| import com.jd.blockchain.ledger.TransactionResponse; | |||
| import com.jd.blockchain.ledger.TransactionState; | |||
| @@ -72,10 +68,7 @@ public class SDK_GateWay_Query_Test_ { | |||
| service = serviceFactory.getBlockchainService(); | |||
| DataContractRegistry.register(TransactionContent.class); | |||
| DataContractRegistry.register(TransactionContentBody.class); | |||
| DataContractRegistry.register(TransactionRequest.class); | |||
| DataContractRegistry.register(NodeRequest.class); | |||
| DataContractRegistry.register(EndpointRequest.class); | |||
| DataContractRegistry.register(TransactionResponse.class); | |||
| } | |||
| @@ -119,16 +112,16 @@ public class SDK_GateWay_Query_Test_ { | |||
| LedgerTransaction[] txList = service.getTransactions(ledgerHash, ledgerNumber, 0, 100); | |||
| for (LedgerTransaction ledgerTransaction : txList) { | |||
| System.out.println("ledgerTransaction.Hash=" + ledgerTransaction.getHash()); | |||
| System.out.println("ledgerTransaction.Hash=" + ledgerTransaction.getTransactionHash()); | |||
| } | |||
| txList = service.getTransactions(ledgerHash, hashDigest, 0, 100); | |||
| for (LedgerTransaction ledgerTransaction : txList) { | |||
| System.out.println("ledgerTransaction.Hash=" + ledgerTransaction.getHash()); | |||
| System.out.println("ledgerTransaction.Hash=" + ledgerTransaction.getTransactionHash()); | |||
| } | |||
| Transaction tx = service.getTransactionByContentHash(ledgerHash, hashDigest); | |||
| DigitalSignature[] signatures = tx.getEndpointSignatures(); | |||
| LedgerTransaction tx = service.getTransactionByContentHash(ledgerHash, hashDigest); | |||
| DigitalSignature[] signatures = tx.getRequest().getEndpointSignatures(); | |||
| for (DigitalSignature signature : signatures) { | |||
| System.out.println(signature.getDigest().getAlgorithm()); | |||
| } | |||
| @@ -23,11 +23,8 @@ import com.jd.blockchain.crypto.PubKey; | |||
| import com.jd.blockchain.crypto.SignatureFunction; | |||
| import com.jd.blockchain.ledger.BlockchainKeyGenerator; | |||
| import com.jd.blockchain.ledger.BlockchainKeypair; | |||
| import com.jd.blockchain.ledger.EndpointRequest; | |||
| import com.jd.blockchain.ledger.NodeRequest; | |||
| import com.jd.blockchain.ledger.PreparedTransaction; | |||
| import com.jd.blockchain.ledger.TransactionContent; | |||
| import com.jd.blockchain.ledger.TransactionContentBody; | |||
| import com.jd.blockchain.ledger.TransactionRequest; | |||
| import com.jd.blockchain.ledger.TransactionResponse; | |||
| import com.jd.blockchain.ledger.TransactionState; | |||
| @@ -89,10 +86,7 @@ public class SDK_GateWay_User_Test_ { | |||
| service = serviceFactory.getBlockchainService(); | |||
| DataContractRegistry.register(TransactionContent.class); | |||
| DataContractRegistry.register(TransactionContentBody.class); | |||
| DataContractRegistry.register(TransactionRequest.class); | |||
| DataContractRegistry.register(NodeRequest.class); | |||
| DataContractRegistry.register(EndpointRequest.class); | |||
| DataContractRegistry.register(TransactionResponse.class); | |||
| } | |||