diff --git a/package/version b/package/version index 7db2672..a2e1aa9 100644 --- a/package/version +++ b/package/version @@ -1 +1 @@ -0.1.26 +0.1.27 diff --git a/pyproject.toml b/pyproject.toml index bcade3a..dd480c6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "skribe" -version = "0.1.26" +version = "0.1.27" description = "Property testing for Stylus smart contracts" readme = "README.md" requires-python = "~=3.10" diff --git a/src/skribe/kdist/stylus-semantics/hostfuns.md b/src/skribe/kdist/stylus-semantics/hostfuns.md index ef60bbc..7677afe 100644 --- a/src/skribe/kdist/stylus-semantics/hostfuns.md +++ b/src/skribe/kdist/stylus-semantics/hostfuns.md @@ -449,17 +449,24 @@ This is just a tracing (no-op) function. => #waitCommands ... - (.K => #accessAccounts ACCTTO - ~> #checkCall ACCTFROM VALUE - ~> #call ACCTFROM ACCTTO ACCTTO VALUE VALUE DATA false - ~> #returnStylus RET_LEN_PTR - ) + (.K => #callStylus ACCTTO ACCTTO VALUE VALUE DATA false RET_LEN_PTR ) ~> #endWasm ... ACCTTO : (DATA : VALUE : RET_LEN_PTR : S) => S - ACCTFROM + syntax InternalCmd ::= "#callStylus" Int Int Int Int Bytes Bool Int + // ------------------------------------ + rule [callStylus]: + #callStylus ACCTTO ACCTCODE VALUE APPVALUE ARGS STATIC RET_LEN_PTR + => #accessAccounts ACCTTO + ~> #checkCall ACCTFROM VALUE + ~> #call ACCTFROM ACCTTO ACCTTO VALUE APPVALUE ARGS STATIC + ~> #returnStylus RET_LEN_PTR + ... + + ACCTFROM + syntax InternalCmd ::= "#returnStylus" Int // ------------------------------------------ rule [halt-returnStylus.success]: @@ -508,15 +515,10 @@ This is just a tracing (no-op) function. => #waitCommands ... - (.K => #accessAccounts ACCTTO - ~> #checkCall ACCTFROM 0 - ~> #call ACCTFROM ACCTTO ACCTTO 0 0 DATA false - ~> #returnStylus RET_LEN_PTR - ) + (.K => #callStylus ACCTTO ACCTTO 0 0 DATA true RET_LEN_PTR ) ~> #endWasm ... ACCTTO : (DATA : RET_LEN_PTR : S) => S - ACCTFROM ``` diff --git a/src/skribe/kdist/stylus-semantics/skribe.md b/src/skribe/kdist/stylus-semantics/skribe.md index ca5d2f4..ae3b7e5 100644 --- a/src/skribe/kdist/stylus-semantics/skribe.md +++ b/src/skribe/kdist/stylus-semantics/skribe.md @@ -159,6 +159,31 @@ module SKRIBE OUT +``` + +### Pranks + +```k + rule [stylus.prank]: + #callStylus ACCTTO ACCTCODE VALUE APPVALUE ARGS STATIC RET_LEN_PTR + => #injectPrank + ~> #callStylus ACCTTO ACCTCODE VALUE APPVALUE ARGS STATIC RET_LEN_PTR + ~> #endPrank + ... + + CD + ACCT + + true + NCL + CD + ... + + requires ACCT =/=K NCL + andBool ACCTTO =/=K #address(FoundryCheat) + [priority(34)] + + endmodule ``` diff --git a/uv.lock b/uv.lock index 6573f21..11f6c71 100644 --- a/uv.lock +++ b/uv.lock @@ -1815,7 +1815,7 @@ wheels = [ [[package]] name = "skribe" -version = "0.1.26" +version = "0.1.27" source = { editable = "." } dependencies = [ { name = "kontrol" },