diff --git a/core/src/main/java/org/nervos/ckb/sign/ScriptSigner.java b/core/src/main/java/org/nervos/ckb/sign/ScriptSigner.java index 36db6543c..c114b45bd 100644 --- a/core/src/main/java/org/nervos/ckb/sign/ScriptSigner.java +++ b/core/src/main/java/org/nervos/ckb/sign/ScriptSigner.java @@ -2,6 +2,27 @@ import org.nervos.ckb.type.Transaction; +/** + * ScriptSigner implements the signing logic for various scripts. + * + * These signers should be registered in {@link TransactionSigner}. + */ public interface ScriptSigner { + /** + * Sign the transaction for the script. + * + * This function is called by {@link TransactionSigner} + * for each context and each matched script group. + * + * @param transaction The transaction to be signed. + * @param scriptGroup TransactionSigner selects the corresponding ScriptSigner for each script group. + * This selection is based on the registered ScriptSigner's provided script type and hash. + * @param context This is passed from {@code TransactionSigner.signTransaction} + * @return {@code true} when the script handler has modified the transaction. + * + * @see TransactionSigner#signTransaction(TransactionWithScriptGroups, Context...) + * @see TransactionSigner#signTransaction(TransactionWithScriptGroups, Set) + * @see TransactionSigner#signTransaction(TransactionWithScriptGroups, String...) + */ boolean signTransaction(Transaction transaction, ScriptGroup scriptGroup, Context context); } diff --git a/core/src/main/java/org/nervos/ckb/sign/TransactionSigner.java b/core/src/main/java/org/nervos/ckb/sign/TransactionSigner.java index c06243012..498a7ffce 100644 --- a/core/src/main/java/org/nervos/ckb/sign/TransactionSigner.java +++ b/core/src/main/java/org/nervos/ckb/sign/TransactionSigner.java @@ -87,12 +87,25 @@ public TransactionSigner registerLockScriptSigner(String codeHash, ScriptSigner return registerLockScriptSigner(Numeric.hexStringToByteArray(codeHash), scriptSigner); } - + /** + * signTransaction signs the transaction using registered ScriptSigners. + * + * @param transaction Transaction to be signed. + * @param contexts Contexts for {@link org.nervos.ckb.sign.ScriptSigner}. + * @return signed groups indices. + */ public Set signTransaction( TransactionWithScriptGroups transaction, Context... contexts) { return signTransaction(transaction, new HashSet<>(Arrays.asList(contexts))); } + /** + * signTransaction signs the transaction using registered ScriptSigners. + * + * @param transaction Transaction to be signed. + * @param contexts Contexts for {@link org.nervos.ckb.sign.ScriptSigner}. + * @return signed groups indices. + */ public Set signTransaction( TransactionWithScriptGroups transaction, Set contexts) { Set signedGroupsIndices = new HashSet<>(); @@ -122,6 +135,13 @@ public Set signTransaction( return signedGroupsIndices; } + /** + * signTransaction signs the transaction using registered ScriptSigners. + * + * @param transaction Transaction to be signed. + * @param privateKeys Each private key is wrapped in one {@link Context}. These contexts will be passed to ScriptSigners. + * @return signed groups indices. + */ public Set signTransaction( TransactionWithScriptGroups transaction, String... privateKeys) { Contexts contexts = new Contexts();