diff --git a/docs/TUTORIAL.md b/docs/TUTORIAL.md index 158809b1..e8c99c5a 100644 --- a/docs/TUTORIAL.md +++ b/docs/TUTORIAL.md @@ -866,7 +866,7 @@ entry verify(sig s, pubkey pk) { } ``` -**`checkSigFromStack(datasig signature, byte[32] digest, pubkey publicKey): bool`** +**`checkMsgSig(datasig signature, byte[32] digest, pubkey publicKey): bool`** Verify a 64-byte Schnorr signature against a 32-byte digest supplied by the contract. Hash the message explicitly with the hash function required by your @@ -874,7 +874,7 @@ protocol: ```javascript entry verify(datasig oracleSig, byte[] oracleMessage, pubkey oraclePk) { - require(checkSigFromStack(oracleSig, sha256(oracleMessage), oraclePk)); + require(checkMsgSig(oracleSig, sha256(oracleMessage), oraclePk)); } ``` diff --git a/extensions/silverscript.nvim/queries/silverscript/highlights.scm b/extensions/silverscript.nvim/queries/silverscript/highlights.scm index f9a28d58..9a01be94 100644 --- a/extensions/silverscript.nvim/queries/silverscript/highlights.scm +++ b/extensions/silverscript.nvim/queries/silverscript/highlights.scm @@ -74,7 +74,7 @@ (function_call (identifier) @function.builtin (#match? @function.builtin - "^(readInputState|readInputStateWithTemplate|validateOutputState|validateOutputStateWithTemplate|validateOutputStateWithInputTemplate|verifyOutputState|verifyOutputStates|sha256|OpTxSubnetId|OpTxGas|OpTxPayloadLen|OpTxPayloadSubstr|OpOutpointTxId|OpOutpointIndex|OpTxInputScriptSigLen|OpTxInputScriptSigSubstr|OpTxInputSeq|OpTxInputIsCoinbase|OpTxInputSpkLen|OpTxInputSpkSubstr|OpTxOutputSpkLen|OpTxOutputSpkSubstr|OpAuthOutputCount|OpAuthOutputIdx|OpInputCovenantId|OpOutputCovenantId|OpCovInputCount|OpCovInputIdx|OpCovOutputCount|OpCovOutputIdx|OpNum2Bin|OpBin2Num|OpChainblockSeqCommit|checkSigFromStack|checkSigFromStackECDSA|checkSig|checkMultiSig|blake2b|blake2bWithKey|blake3|blake3WithKey|templateHash)$")) + "^(readInputState|readInputStateWithTemplate|validateOutputState|validateOutputStateWithTemplate|validateOutputStateWithInputTemplate|verifyOutputState|verifyOutputStates|sha256|OpTxSubnetId|OpTxGas|OpTxPayloadLen|OpTxPayloadSubstr|OpOutpointTxId|OpOutpointIndex|OpTxInputScriptSigLen|OpTxInputScriptSigSubstr|OpTxInputSeq|OpTxInputIsCoinbase|OpTxInputSpkLen|OpTxInputSpkSubstr|OpTxOutputSpkLen|OpTxOutputSpkSubstr|OpAuthOutputCount|OpAuthOutputIdx|OpInputCovenantId|OpOutputCovenantId|OpCovInputCount|OpCovInputIdx|OpCovOutputCount|OpCovOutputIdx|OpNum2Bin|OpBin2Num|OpChainblockSeqCommit|checkMsgSig|checkSigFromStackECDSA|checkSig|checkMultiSig|blake2b|blake2bWithKey|blake3|blake3WithKey|templateHash)$")) (call_statement (member_access diff --git a/extensions/vscode/queries/highlights.scm b/extensions/vscode/queries/highlights.scm index f9a28d58..9a01be94 100644 --- a/extensions/vscode/queries/highlights.scm +++ b/extensions/vscode/queries/highlights.scm @@ -74,7 +74,7 @@ (function_call (identifier) @function.builtin (#match? @function.builtin - "^(readInputState|readInputStateWithTemplate|validateOutputState|validateOutputStateWithTemplate|validateOutputStateWithInputTemplate|verifyOutputState|verifyOutputStates|sha256|OpTxSubnetId|OpTxGas|OpTxPayloadLen|OpTxPayloadSubstr|OpOutpointTxId|OpOutpointIndex|OpTxInputScriptSigLen|OpTxInputScriptSigSubstr|OpTxInputSeq|OpTxInputIsCoinbase|OpTxInputSpkLen|OpTxInputSpkSubstr|OpTxOutputSpkLen|OpTxOutputSpkSubstr|OpAuthOutputCount|OpAuthOutputIdx|OpInputCovenantId|OpOutputCovenantId|OpCovInputCount|OpCovInputIdx|OpCovOutputCount|OpCovOutputIdx|OpNum2Bin|OpBin2Num|OpChainblockSeqCommit|checkSigFromStack|checkSigFromStackECDSA|checkSig|checkMultiSig|blake2b|blake2bWithKey|blake3|blake3WithKey|templateHash)$")) + "^(readInputState|readInputStateWithTemplate|validateOutputState|validateOutputStateWithTemplate|validateOutputStateWithInputTemplate|verifyOutputState|verifyOutputStates|sha256|OpTxSubnetId|OpTxGas|OpTxPayloadLen|OpTxPayloadSubstr|OpOutpointTxId|OpOutpointIndex|OpTxInputScriptSigLen|OpTxInputScriptSigSubstr|OpTxInputSeq|OpTxInputIsCoinbase|OpTxInputSpkLen|OpTxInputSpkSubstr|OpTxOutputSpkLen|OpTxOutputSpkSubstr|OpAuthOutputCount|OpAuthOutputIdx|OpInputCovenantId|OpOutputCovenantId|OpCovInputCount|OpCovInputIdx|OpCovOutputCount|OpCovOutputIdx|OpNum2Bin|OpBin2Num|OpChainblockSeqCommit|checkMsgSig|checkSigFromStackECDSA|checkSig|checkMultiSig|blake2b|blake2bWithKey|blake3|blake3WithKey|templateHash)$")) (call_statement (member_access diff --git a/extensions/zed/languages/silverscript/highlights.scm b/extensions/zed/languages/silverscript/highlights.scm index f9a28d58..9a01be94 100644 --- a/extensions/zed/languages/silverscript/highlights.scm +++ b/extensions/zed/languages/silverscript/highlights.scm @@ -74,7 +74,7 @@ (function_call (identifier) @function.builtin (#match? @function.builtin - "^(readInputState|readInputStateWithTemplate|validateOutputState|validateOutputStateWithTemplate|validateOutputStateWithInputTemplate|verifyOutputState|verifyOutputStates|sha256|OpTxSubnetId|OpTxGas|OpTxPayloadLen|OpTxPayloadSubstr|OpOutpointTxId|OpOutpointIndex|OpTxInputScriptSigLen|OpTxInputScriptSigSubstr|OpTxInputSeq|OpTxInputIsCoinbase|OpTxInputSpkLen|OpTxInputSpkSubstr|OpTxOutputSpkLen|OpTxOutputSpkSubstr|OpAuthOutputCount|OpAuthOutputIdx|OpInputCovenantId|OpOutputCovenantId|OpCovInputCount|OpCovInputIdx|OpCovOutputCount|OpCovOutputIdx|OpNum2Bin|OpBin2Num|OpChainblockSeqCommit|checkSigFromStack|checkSigFromStackECDSA|checkSig|checkMultiSig|blake2b|blake2bWithKey|blake3|blake3WithKey|templateHash)$")) + "^(readInputState|readInputStateWithTemplate|validateOutputState|validateOutputStateWithTemplate|validateOutputStateWithInputTemplate|verifyOutputState|verifyOutputStates|sha256|OpTxSubnetId|OpTxGas|OpTxPayloadLen|OpTxPayloadSubstr|OpOutpointTxId|OpOutpointIndex|OpTxInputScriptSigLen|OpTxInputScriptSigSubstr|OpTxInputSeq|OpTxInputIsCoinbase|OpTxInputSpkLen|OpTxInputSpkSubstr|OpTxOutputSpkLen|OpTxOutputSpkSubstr|OpAuthOutputCount|OpAuthOutputIdx|OpInputCovenantId|OpOutputCovenantId|OpCovInputCount|OpCovInputIdx|OpCovOutputCount|OpCovOutputIdx|OpNum2Bin|OpBin2Num|OpChainblockSeqCommit|checkMsgSig|checkSigFromStackECDSA|checkSig|checkMultiSig|blake2b|blake2bWithKey|blake3|blake3WithKey|templateHash)$")) (call_statement (member_access diff --git a/silverscript-lang/src/compiler/builtin_types.rs b/silverscript-lang/src/compiler/builtin_types.rs index 8c3e452c..f3f4b2ea 100644 --- a/silverscript-lang/src/compiler/builtin_types.rs +++ b/silverscript-lang/src/compiler/builtin_types.rs @@ -66,7 +66,7 @@ pub(super) fn builtin_return(name: &str) -> Option { | "OpCovOutputCount" | "OpCovOutputIdx" => scalar(TypeBase::Int), "length" => scalar(TypeBase::Int), - "OpTxInputIsCoinbase" | "checkSig" | "checkSigFromStack" | "checkSigFromStackECDSA" => scalar(TypeBase::Bool), + "OpTxInputIsCoinbase" | "checkSig" | "checkMsgSig" | "checkSigFromStackECDSA" => scalar(TypeBase::Bool), "r0.g16.verify" | "r0.succinct.verify" | "r0.succinct.blake2b.verify" @@ -123,7 +123,7 @@ pub(super) fn builtin_parameters(name: &str) -> Option vec![("data", byte_array(ArrayDim::Dynamic)), ("key", byte_array(ArrayDim::Fixed(32)))], "templateHash" => vec![("templatePrefix", byte_array(ArrayDim::Dynamic)), ("templateSuffix", byte_array(ArrayDim::Dynamic))], "checkSig" => vec![("signature", scalar(TypeBase::Sig)), ("publicKey", scalar(TypeBase::Pubkey))], - "checkSigFromStack" => vec![ + "checkMsgSig" => vec![ ("signature", scalar(TypeBase::Datasig)), ("digest", byte_array(ArrayDim::Fixed(32))), ("publicKey", scalar(TypeBase::Pubkey)), diff --git a/silverscript-lang/src/compiler/compile/expression/builtin.rs b/silverscript-lang/src/compiler/compile/expression/builtin.rs index c0c93a07..abdcfb1b 100644 --- a/silverscript-lang/src/compiler/compile/expression/builtin.rs +++ b/silverscript-lang/src/compiler/compile/expression/builtin.rs @@ -31,7 +31,7 @@ pub(super) fn compile_call_expr<'i>( "blake3WithKey" => compile_blake3_with_key_call(ctx, args), "templateHash" => compile_template_hash_call(ctx, args), "checkSig" => compile_checksig_call(ctx, args), - "checkSigFromStack" => compile_checksigfromstack_call(ctx, name, args, OpCheckSigFromStack), + "checkMsgSig" => compile_checksigfromstack_call(ctx, name, args, OpCheckSigFromStack), "checkSigFromStackECDSA" => compile_checksigfromstack_call(ctx, name, args, OpCheckSigFromStackECDSA), "r0.g16.verify" => compile_r0_groth16_verify_call(ctx, args), "r0.succinct.verify" | "r0.succinct.blake2b.verify" | "r0.succinct.poseidon2.verify" | "r0.succinct.sha256.verify" => { diff --git a/silverscript-lang/tests/compiler_tests.rs b/silverscript-lang/tests/compiler_tests.rs index 28ff03e2..05b766fe 100644 --- a/silverscript-lang/tests/compiler_tests.rs +++ b/silverscript-lang/tests/compiler_tests.rs @@ -8518,7 +8518,7 @@ fn checksigfromstack_lowers_to_matching_opcode() { let source = r#" contract DataSig(datasig signature, byte[32] digest, pubkey publicKey) { entry main() { - require(checkSigFromStack(signature, digest, publicKey)); + require(checkMsgSig(signature, digest, publicKey)); } } "#; @@ -8590,7 +8590,7 @@ fn checksigfromstack_requires_datasig_and_32_byte_digest_types() { let raw_message = r#" contract DataSig(datasig signature, byte[] message, pubkey publicKey) { entry main() { - require(checkSigFromStack(signature, message, publicKey)); + require(checkMsgSig(signature, message, publicKey)); } } "#; @@ -8607,7 +8607,7 @@ fn checksigfromstack_requires_datasig_and_32_byte_digest_types() { entry main() { int N = 32; byte[N] digest = byte[N](0x010203); - require(checkSigFromStack(signature, digest, publicKey)); + require(checkMsgSig(signature, digest, publicKey)); } } "#; @@ -8624,7 +8624,7 @@ fn checksigfromstack_requires_datasig_and_32_byte_digest_types() { int constant N = 32; entry main(byte[N] digest) { - require(checkSigFromStack(signature, digest, publicKey)); + require(checkMsgSig(signature, digest, publicKey)); } } "#; @@ -8639,7 +8639,7 @@ fn checksigfromstack_requires_datasig_and_32_byte_digest_types() { r#" contract DataSig() {{ entry main() {{ - require(checkSigFromStack({signature_literal}, {digest_literal}, {public_key_literal})); + require(checkMsgSig({signature_literal}, {digest_literal}, {public_key_literal})); }} }} "# @@ -8652,7 +8652,7 @@ fn checksigfromstack_requires_datasig_and_32_byte_digest_types() { entry main() {{ byte[32] digest = {digest_literal}; byte[32] publicKey = {public_key_bytes_literal}; - require(checkSigFromStack(signature, digest, publicKey)); + require(checkMsgSig(signature, digest, publicKey)); }} }} "# @@ -8667,7 +8667,7 @@ fn checksigfromstack_requires_datasig_and_32_byte_digest_types() { let tx_signature = r#" contract DataSig(sig signature, byte[32] digest, pubkey publicKey) { entry main() { - require(checkSigFromStack(signature, digest, publicKey)); + require(checkMsgSig(signature, digest, publicKey)); } } "#; @@ -9091,7 +9091,7 @@ fn checksigfromstack_result_is_checked_as_bool() { let bool_assignment = r#" contract DataSig(datasig signature, byte[32] digest, pubkey publicKey) { entry main() { - bool ok = checkSigFromStack(signature, digest, publicKey); + bool ok = checkMsgSig(signature, digest, publicKey); require(ok); } } @@ -9106,7 +9106,7 @@ fn checksigfromstack_result_is_checked_as_bool() { let byte_assignment = r#" contract DataSig(datasig signature, byte[32] digest, pubkey publicKey) { entry main() { - byte[32] ok = checkSigFromStack(signature, digest, publicKey); + byte[32] ok = checkMsgSig(signature, digest, publicKey); require(true); } } @@ -9122,7 +9122,7 @@ fn checksigfromstack_result_is_checked_as_bool() { let bool_return = r#" contract DataSig(datasig signature, byte[32] digest, pubkey publicKey) { function ok() : bool { - return checkSigFromStack(signature, digest, publicKey); + return checkMsgSig(signature, digest, publicKey); } entry main() { @@ -9140,7 +9140,7 @@ fn checksigfromstack_result_is_checked_as_bool() { let byte_return = r#" contract DataSig(datasig signature, byte[32] digest, pubkey publicKey) { function bad() : byte[32] { - return checkSigFromStack(signature, digest, publicKey); + return checkMsgSig(signature, digest, publicKey); } entry main() { @@ -9162,7 +9162,7 @@ fn checksigfromstack_executes_schnorr_signature_verification() { let source = r#" contract DataSig(datasig signature, byte[32] digest, pubkey publicKey) { entry main() { - require(checkSigFromStack(signature, digest, publicKey)); + require(checkMsgSig(signature, digest, publicKey)); } } "#; @@ -9194,7 +9194,7 @@ fn checksigfromstack_false_result_can_be_asserted() { let source = r#" contract DataSig() { entry main(datasig signature, byte[32] digest, pubkey publicKey) { - require(!checkSigFromStack(signature, digest, publicKey)); + require(!checkMsgSig(signature, digest, publicKey)); } } "#; diff --git a/silverscript-lang/tests/examples/hodl_vault.sil b/silverscript-lang/tests/examples/hodl_vault.sil index 2e7aa86f..c9d2ca50 100644 --- a/silverscript-lang/tests/examples/hodl_vault.sil +++ b/silverscript-lang/tests/examples/hodl_vault.sil @@ -15,7 +15,7 @@ contract HodlVault( require(tx.time >= blockHeight); require(price >= priceTarget); - require(checkSigFromStack(oracleSig, sha256(oracleMessage), oraclePk)); + require(checkMsgSig(oracleSig, sha256(oracleMessage), oraclePk)); require(checkSig(ownerSig, ownerPk)); } } diff --git a/silverscript-lang/tests/examples/simple_checksigfromstack.sil b/silverscript-lang/tests/examples/simple_checksigfromstack.sil index 12cc0c34..0b387c6e 100644 --- a/silverscript-lang/tests/examples/simple_checksigfromstack.sil +++ b/silverscript-lang/tests/examples/simple_checksigfromstack.sil @@ -2,6 +2,6 @@ pragma silverscript ^0.1.0; contract Test(datasig s, pubkey pk) { entry cds(byte[] data) { - require(checkSigFromStack(s, sha256(data), pk)); + require(checkMsgSig(s, sha256(data), pk)); } } diff --git a/silverscript-lang/tests/examples/trailing_comma.sil b/silverscript-lang/tests/examples/trailing_comma.sil index d9954450..9b43b102 100644 --- a/silverscript-lang/tests/examples/trailing_comma.sil +++ b/silverscript-lang/tests/examples/trailing_comma.sil @@ -10,7 +10,7 @@ contract Contract( sig oracleTxSig, ) { byte[] oracleMessage = byte[]('Spend') + (12 as byte[8]); - require(checkSigFromStack( + require(checkMsgSig( oracleMsgSig, sha256(oracleMessage), oraclePk, diff --git a/tree-sitter/queries/highlights.scm b/tree-sitter/queries/highlights.scm index f9a28d58..9a01be94 100644 --- a/tree-sitter/queries/highlights.scm +++ b/tree-sitter/queries/highlights.scm @@ -74,7 +74,7 @@ (function_call (identifier) @function.builtin (#match? @function.builtin - "^(readInputState|readInputStateWithTemplate|validateOutputState|validateOutputStateWithTemplate|validateOutputStateWithInputTemplate|verifyOutputState|verifyOutputStates|sha256|OpTxSubnetId|OpTxGas|OpTxPayloadLen|OpTxPayloadSubstr|OpOutpointTxId|OpOutpointIndex|OpTxInputScriptSigLen|OpTxInputScriptSigSubstr|OpTxInputSeq|OpTxInputIsCoinbase|OpTxInputSpkLen|OpTxInputSpkSubstr|OpTxOutputSpkLen|OpTxOutputSpkSubstr|OpAuthOutputCount|OpAuthOutputIdx|OpInputCovenantId|OpOutputCovenantId|OpCovInputCount|OpCovInputIdx|OpCovOutputCount|OpCovOutputIdx|OpNum2Bin|OpBin2Num|OpChainblockSeqCommit|checkSigFromStack|checkSigFromStackECDSA|checkSig|checkMultiSig|blake2b|blake2bWithKey|blake3|blake3WithKey|templateHash)$")) + "^(readInputState|readInputStateWithTemplate|validateOutputState|validateOutputStateWithTemplate|validateOutputStateWithInputTemplate|verifyOutputState|verifyOutputStates|sha256|OpTxSubnetId|OpTxGas|OpTxPayloadLen|OpTxPayloadSubstr|OpOutpointTxId|OpOutpointIndex|OpTxInputScriptSigLen|OpTxInputScriptSigSubstr|OpTxInputSeq|OpTxInputIsCoinbase|OpTxInputSpkLen|OpTxInputSpkSubstr|OpTxOutputSpkLen|OpTxOutputSpkSubstr|OpAuthOutputCount|OpAuthOutputIdx|OpInputCovenantId|OpOutputCovenantId|OpCovInputCount|OpCovInputIdx|OpCovOutputCount|OpCovOutputIdx|OpNum2Bin|OpBin2Num|OpChainblockSeqCommit|checkMsgSig|checkSigFromStackECDSA|checkSig|checkMultiSig|blake2b|blake2bWithKey|blake3|blake3WithKey|templateHash)$")) (call_statement (member_access