From 5744882bedab810be8aad43dad532fe8c77a58c4 Mon Sep 17 00:00:00 2001 From: meilongwhpu Date: Fri, 26 Aug 2022 18:15:20 +0800 Subject: [PATCH 1/2] Add the function of updating CPT --- contracts/CptController.sol | 2 +- contracts/CptData.sol | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/contracts/CptController.sol b/contracts/CptController.sol index 4d7c891..d2ea18f 100644 --- a/contracts/CptController.sol +++ b/contracts/CptController.sol @@ -275,7 +275,7 @@ contract CptController { intArray[0] = cptVersion; int created = cptIntArray[1]; intArray[1] = created; - cptData.putCpt(cptId, publisher, intArray, bytes32Array, jsonSchemaArray, v, r, s); + cptData.updateCpt(cptId, publisher, intArray, bytes32Array, jsonSchemaArray, v, r, s); UpdateCptRetLog(0, cptId, cptVersion); return true; } else { diff --git a/contracts/CptData.sol b/contracts/CptData.sol index e7674ec..804b9f9 100644 --- a/contracts/CptData.sol +++ b/contracts/CptData.sol @@ -79,6 +79,29 @@ contract CptData { return true; } + function updateCpt( + uint cptId, + address cptPublisher, + int[8] cptIntArray, + bytes32[8] cptBytes32Array, + bytes32[128] cptJsonSchemaArray, + uint8 cptV, + bytes32 cptR, + bytes32 cptS + ) + public + returns (bool) + { + cptMap[cptId].signature.v=cptV; + cptMap[cptId].signature.r=cptR; + cptMap[cptId].signature.s=cptS; + cptMap[cptId].publisher=cptPublisher; + cptMap[cptId].intArray=cptIntArray; + cptMap[cptId].bytes32Array=cptBytes32Array; + cptMap[cptId].jsonSchemaArray=cptJsonSchemaArray; + return true; + } + function getCptId( address publisher ) From 7d26ab7bf96b575dc736b95fc64f94bfc76e103e Mon Sep 17 00:00:00 2001 From: meilongwhpu Date: Tue, 18 Oct 2022 11:32:46 +0800 Subject: [PATCH 2/2] updating CPT --- contracts/CptData.sol | 126 +++++++++++++++++++++++++++++++++++------- 1 file changed, 105 insertions(+), 21 deletions(-) diff --git a/contracts/CptData.sol b/contracts/CptData.sol index 804b9f9..bf03677 100644 --- a/contracts/CptData.sol +++ b/contracts/CptData.sol @@ -27,7 +27,10 @@ contract CptData { uint constant public NONE_AUTHORITY_ISSUER_START_ID = 2000000; uint private authority_issuer_current_id = 1000; uint private none_authority_issuer_current_id = 2000000; - + + // Default CPT version + uint constant private CPT_DEFAULT_VERSION = 1; + AuthorityIssuerData private authorityIssuerData; function CptData( @@ -56,8 +59,9 @@ contract CptData { //store signature Signature signature; } - - mapping (uint => Cpt) private cptMap; + + mapping (uint => mapping(uint => Cpt)) private cptMap; + uint[] private cptIdList; function putCpt( @@ -74,7 +78,7 @@ contract CptData { returns (bool) { Signature memory cptSignature = Signature({v: cptV, r: cptR, s: cptS}); - cptMap[cptId] = Cpt({publisher: cptPublisher, intArray: cptIntArray, bytes32Array: cptBytes32Array, jsonSchemaArray:cptJsonSchemaArray, signature: cptSignature}); + cptMap[cptId][uint(cptIntArray[0])] = Cpt({publisher: cptPublisher, intArray: cptIntArray, bytes32Array: cptBytes32Array, jsonSchemaArray:cptJsonSchemaArray, signature: cptSignature}); cptIdList.push(cptId); return true; } @@ -92,13 +96,8 @@ contract CptData { public returns (bool) { - cptMap[cptId].signature.v=cptV; - cptMap[cptId].signature.r=cptR; - cptMap[cptId].signature.s=cptS; - cptMap[cptId].publisher=cptPublisher; - cptMap[cptId].intArray=cptIntArray; - cptMap[cptId].bytes32Array=cptBytes32Array; - cptMap[cptId].jsonSchemaArray=cptJsonSchemaArray; + Signature memory cptSignature = Signature({v: cptV, r: cptR, s: cptS}); + cptMap[cptId][uint(cptIntArray[0])] = Cpt({publisher: cptPublisher, intArray: cptIntArray, bytes32Array: cptBytes32Array, jsonSchemaArray:cptJsonSchemaArray, signature: cptSignature}); return true; } @@ -140,7 +139,32 @@ contract CptData { bytes32 r, bytes32 s) { - Cpt memory cpt = cptMap[cptId]; + Cpt memory cpt = cptMap[cptId][CPT_DEFAULT_VERSION]; + publisher = cpt.publisher; + intArray = cpt.intArray; + bytes32Array = cpt.bytes32Array; + jsonSchemaArray = cpt.jsonSchemaArray; + v = cpt.signature.v; + r = cpt.signature.r; + s = cpt.signature.s; + } + + function getCpt( + uint cptId, + uint version + ) + public + constant + returns ( + address publisher, + int[8] intArray, + bytes32[8] bytes32Array, + bytes32[128] jsonSchemaArray, + uint8 v, + bytes32 r, + bytes32 s) + { + Cpt memory cpt = cptMap[cptId][version]; publisher = cpt.publisher; intArray = cpt.intArray; bytes32Array = cpt.bytes32Array; @@ -149,7 +173,7 @@ contract CptData { r = cpt.signature.r; s = cpt.signature.s; } - + function getCptPublisher( uint cptId ) @@ -157,10 +181,21 @@ contract CptData { constant returns (address publisher) { - Cpt memory cpt = cptMap[cptId]; + Cpt memory cpt = cptMap[cptId][CPT_DEFAULT_VERSION]; + publisher = cpt.publisher; + } + + function getCptPublisher( + uint cptId, + uint version + ) + public + constant + returns (address publisher) + { + Cpt memory cpt = cptMap[cptId][version]; publisher = cpt.publisher; } - function getCptIntArray( uint cptId ) @@ -168,10 +203,22 @@ contract CptData { constant returns (int[8] intArray) { - Cpt memory cpt = cptMap[cptId]; + Cpt memory cpt = cptMap[cptId][CPT_DEFAULT_VERSION]; intArray = cpt.intArray; } - + + function getCptIntArray( + uint cptId, + uint version + ) + public + constant + returns (int[8] intArray) + { + Cpt memory cpt = cptMap[cptId][version]; + intArray = cpt.intArray; + } + function getCptJsonSchemaArray( uint cptId ) @@ -179,7 +226,19 @@ contract CptData { constant returns (bytes32[128] jsonSchemaArray) { - Cpt memory cpt = cptMap[cptId]; + Cpt memory cpt = cptMap[cptId][CPT_DEFAULT_VERSION]; + jsonSchemaArray = cpt.jsonSchemaArray; + } + + function getCptJsonSchemaArray( + uint cptId, + uint version + ) + public + constant + returns (bytes32[128] jsonSchemaArray) + { + Cpt memory cpt = cptMap[cptId][version]; jsonSchemaArray = cpt.jsonSchemaArray; } @@ -190,7 +249,19 @@ contract CptData { constant returns (bytes32[8] bytes32Array) { - Cpt memory cpt = cptMap[cptId]; + Cpt memory cpt = cptMap[cptId][CPT_DEFAULT_VERSION]; + bytes32Array = cpt.bytes32Array; + } + + function getCptBytes32Array( + uint cptId, + uint version + ) + public + constant + returns (bytes32[8] bytes32Array) + { + Cpt memory cpt = cptMap[cptId][version]; bytes32Array = cpt.bytes32Array; } @@ -201,12 +272,25 @@ contract CptData { constant returns (uint8 v, bytes32 r, bytes32 s) { - Cpt memory cpt = cptMap[cptId]; + Cpt memory cpt = cptMap[cptId][CPT_DEFAULT_VERSION]; + v = cpt.signature.v; + r = cpt.signature.r; + s = cpt.signature.s; + } + + function getCptSignature( + uint cptId, + uint version + ) + public + constant + returns (uint8 v, bytes32 r, bytes32 s) + { + Cpt memory cpt = cptMap[cptId][version]; v = cpt.signature.v; r = cpt.signature.r; s = cpt.signature.s; } - function isCptExist( uint cptId )