11package org .unicitylabs .sdk .transaction ;
22
3- import org .unicitylabs .sdk .api .bft .RootTrustBase ;
4- import org .unicitylabs .sdk .predicate .verification .PredicateVerifierService ;
53import org .unicitylabs .sdk .serializer .cbor .CborDeserializer ;
64import org .unicitylabs .sdk .serializer .cbor .CborSerializationException ;
75import org .unicitylabs .sdk .serializer .cbor .CborSerializer ;
86import org .unicitylabs .sdk .transaction .verification .CertifiedMintTransactionVerificationRule ;
97import org .unicitylabs .sdk .transaction .verification .CertifiedTransferTransactionVerificationRule ;
10- import org .unicitylabs .sdk .transaction .verification .MintJustificationVerifierService ;
8+ import org .unicitylabs .sdk .transaction .verification .VerificationContext ;
119import org .unicitylabs .sdk .util .verification .VerificationException ;
1210import org .unicitylabs .sdk .util .verification .VerificationResult ;
1311import org .unicitylabs .sdk .util .verification .VerificationStatus ;
@@ -121,26 +119,20 @@ public static Token fromCbor(byte[] bytes) {
121119 /**
122120 * Creates a token from a certified genesis transaction and verifies it.
123121 *
124- * @param trustBase trust base used for certification checks
125- * @param predicateVerifier predicate verifier service
126- * @param mintJustificationVerifier mint justification verifier service
127122 * @param genesis certified mint transaction
123+ * @param context shared verification context (trust base + registries)
128124 * @return verified token instance
129125 * @throws VerificationException if genesis verification fails
130126 */
131127 public static Token mint (
132- RootTrustBase trustBase ,
133- PredicateVerifierService predicateVerifier ,
134- MintJustificationVerifierService mintJustificationVerifier ,
135- CertifiedMintTransaction genesis
128+ CertifiedMintTransaction genesis ,
129+ VerificationContext context
136130 ) {
137- Objects .requireNonNull (trustBase , "trustBase cannot be null" );
138- Objects .requireNonNull (predicateVerifier , "predicateVerifier cannot be null" );
139- Objects .requireNonNull (mintJustificationVerifier , "mintJustificationVerifier cannot be null" );
140131 Objects .requireNonNull (genesis , "genesis cannot be null" );
132+ Objects .requireNonNull (context , "context cannot be null" );
141133
142134 Token token = new Token (genesis );
143- VerificationResult <VerificationStatus > result = token .verify (trustBase , predicateVerifier , mintJustificationVerifier );
135+ VerificationResult <VerificationStatus > result = token .verify (context );
144136 if (result .getStatus () != VerificationStatus .OK ) {
145137 throw new VerificationException ("Invalid token genesis" , result );
146138 }
@@ -151,25 +143,21 @@ public static Token mint(
151143 /**
152144 * Returns a new token instance with an additional verified transfer transaction.
153145 *
154- * @param trustBase trust base used for certification checks
155- * @param predicateVerifier predicate verifier service
156146 * @param transaction certified transfer transaction to append
147+ * @param context shared verification context (trust base + registries)
157148 * @return new token instance with appended transfer
158149 * @throws VerificationException if transfer verification fails
159150 */
160151 public Token transfer (
161- RootTrustBase trustBase ,
162- PredicateVerifierService predicateVerifier ,
163- CertifiedTransferTransaction transaction
152+ CertifiedTransferTransaction transaction ,
153+ VerificationContext context
164154 ) {
165- Objects .requireNonNull (trustBase , "trustBase cannot be null" );
166- Objects .requireNonNull (predicateVerifier , "predicateVerifier cannot be null" );
167155 Objects .requireNonNull (transaction , "transaction cannot be null" );
156+ Objects .requireNonNull (context , "context cannot be null" );
168157
169158 VerificationResult <VerificationStatus > result = CertifiedTransferTransactionVerificationRule .verify (
170- trustBase ,
171- predicateVerifier ,
172- transaction
159+ transaction ,
160+ context
173161 );
174162 if (result .getStatus () != VerificationStatus .OK ) {
175163 throw new VerificationException ("Invalid token transfer transaction" , result );
@@ -187,19 +175,11 @@ public Token transfer(
187175 * verified iteratively with a worklist instead of recursion, so arbitrarily long provenance
188176 * chains do not grow the call stack.
189177 *
190- * @param trustBase trust base used for certification checks
191- * @param predicateVerifier predicate verifier service
192- * @param mintJustificationVerifier mint justification verifier service
178+ * @param context shared verification context (trust base + registries)
193179 * @return verification result with a child result per verified token
194180 */
195- public VerificationResult <VerificationStatus > verify (
196- RootTrustBase trustBase ,
197- PredicateVerifierService predicateVerifier ,
198- MintJustificationVerifierService mintJustificationVerifier
199- ) {
200- Objects .requireNonNull (trustBase , "trustBase cannot be null" );
201- Objects .requireNonNull (predicateVerifier , "predicateVerifier cannot be null" );
202- Objects .requireNonNull (mintJustificationVerifier , "mintJustificationVerifier cannot be null" );
181+ public VerificationResult <VerificationStatus > verify (VerificationContext context ) {
182+ Objects .requireNonNull (context , "context cannot be null" );
203183
204184 ArrayDeque <Token > pending = new ArrayDeque <>();
205185 pending .add (this );
@@ -211,10 +191,8 @@ public VerificationResult<VerificationStatus> verify(
211191
212192 List <VerificationResult <?>> tokenResults = new ArrayList <>();
213193 VerificationResult <?> result = CertifiedMintTransactionVerificationRule .verify (
214- trustBase ,
215- predicateVerifier ,
216- mintJustificationVerifier ,
217194 token .genesis ,
195+ context ,
218196 pending ::add
219197 );
220198 tokenResults .add (result );
@@ -228,7 +206,7 @@ public VerificationResult<VerificationStatus> verify(
228206 List <VerificationResult <?>> transferResults = new ArrayList <>();
229207 for (int i = 0 ; i < token .transactions .size (); i ++) {
230208 CertifiedTransferTransaction transaction = token .transactions .get (i );
231- result = CertifiedTransferTransactionVerificationRule .verify (trustBase , predicateVerifier , transaction );
209+ result = CertifiedTransferTransactionVerificationRule .verify (transaction , context );
232210 transferResults .add (result );
233211 if (result .getStatus () != VerificationStatus .OK ) {
234212 tokenResults .add (
0 commit comments