From b6d24ede316f2cae4b1c10f4441b55b0d300eb0e Mon Sep 17 00:00:00 2001 From: francesco Date: Sat, 28 Feb 2026 11:47:03 +0000 Subject: [PATCH 01/14] add sip041 draft --- sips/sip-041/sip-at-block-deprecation.md | 100 +++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 sips/sip-041/sip-at-block-deprecation.md diff --git a/sips/sip-041/sip-at-block-deprecation.md b/sips/sip-041/sip-at-block-deprecation.md new file mode 100644 index 00000000..48df9ddb --- /dev/null +++ b/sips/sip-041/sip-at-block-deprecation.md @@ -0,0 +1,100 @@ +# Preamble + +SIP Number: 041 + +Title: Deprecation of `at-block` + +Author(s): + +- Francesco Leacche [francesco@stackslabs.com](mailto:francesco@stackslabs.com) + +Status: Draft + +Consideration: Technical + +Type: Consensus + +Layer: Consensus (hard fork) + +Created: 2026-02-20 + +License: BSD-2-Clause + +Sign-off: + +Discussions-To: + +- https://forum.stacks.org/t/chain-state-pruning-and-at-block-proposed-change/18685 + +# Abstract + +This SIP deprecates the `at-block` built-in in Clarity. Starting from Epoch 3.4, all invocations of `at-block` will fail unconditionally, regardless of which block is referenced or which Clarity version the contract was deployed with. New contracts that use `at-block` will fail static analysis and cannot be deployed. Existing contracts that invoke `at-block` will receive a runtime error. + +# Copyright + +This SIP is made available under the terms of the BSD-2-Clause license, available at [https://opensource.org/licenses/BSD-2-Clause](https://opensource.org/licenses/BSD-2-Clause). This SIP's copyright is held by the Stacks Open Internet Foundation. + +# Introduction + +The `at-block` function in Clarity (originally defined in SIP-002) allows contracts to evaluate read-only expressions against the chain state as it existed at a specific historical block. Its signature is: + +``` +(at-block id-block-hash expr) +``` + +Where `id-block-hash` is a 32-byte buffer identifying a Stacks block, and `expr` is a read-only expression to evaluate in the context of that block's state. + +Currently, `at-block` can reference any block in the chain's history, all the way back to the genesis block. This unbounded lookback forces every Stacks node to maintain the full historical MARF, tracking the value of every key at every point in history. + +On mainnet, the chainstate has grown to approximately 1 TB, of which roughly 95% is consumed by the MARF's historical data. This growth has accelerated significantly since the activation of Nakamoto, making chainstate storage an increasingly urgent concern for node operators. As of 02/20/26, the chain grows by \~2.73GB/day. + +Deprecating `at-block` entirely removes the only mechanism that requires nodes to retain the full MARF history. This is a prerequisite for future MARF pruning and will enable aggressive chainstate reduction. + +## Design Goals + +1. Remove the ability for contracts to query arbitrary historical chain state via `at-block`. +2. Enable future MARF pruning by eliminating the only built-in that requires retention of the full historical state. + +# Specification + +Starting from Epoch 3.4, the `at-block` built-in is **disabled entirely**. This is enforced at two levels: + +**Static analysis (new deployments):** When a contract is deployed in Epoch 3.4 or later, the type checker rejects any use of `at-block` with a `StaticCheckError` of kind `AtBlockUnavailable`. The deployment transaction is included in the block, it fails, and the miner collects the fee. + +**Runtime (existing contracts):** When an already deployed contract invokes `at-block` during Epoch 3.4 or later, the VM immediately aborts with a `RuntimeCheckError` of kind `AtBlockUnavailable`, without evaluating the block hash argument or the closure. The enclosing transaction is included in the block, it fails, and the miner collects the fee. + +## Epoch Gating + +The deprecation is **only enforced in Epoch 3.4 and later**. For all prior epochs, the existing behavior is preserved. This means: + +- Blocks produced before the Epoch 3.4 activation height are validated using the old rules, regardless of when they are replayed. +- Starting at the Epoch 3.4 activation height, any invocation of `at-block`, including from contracts deployed in earlier epochs and earlier Clarity versions, will fail with `AtBlockUnavailable`. + +This is an epoch-level behavioral change, not a Clarity-version-level change. A contract deployed using Clarity 1 that calls `at-block` will still be subject to the deprecation when executed during Epoch 3.4. This is necessary because the deprecation is a property of the node's storage guarantees, not a property of the contract's language version. + +## Impact on Existing Contracts + +Any deployed contract that calls `at-block` will begin receiving runtime errors after Epoch 3.4 activates. This is a semantic change to existing contract behavior. + +Based on analysis of historical mainnet transactions, the number of contracts affected is expected to be very small. The practical usage of `at-block` on mainnet is limited, and contracts that do use it can be redeployed without `at-block` calls prior to Epoch 3.4 activation. + +# Related Work + +- [SIP-002](https://github.com/stacksgov/sips/blob/main/sips/sip-002/sip-002-smart-contract-language.md) defines the Clarity smart contract language, including the original unbounded `at-block` built-in function. +- This SIP will activate in Epoch 3.4 together with SIP-039 and SIP-040. + +# Backwards Compatibility + +This SIP introduces a breaking change to the existing `at-block` built-in for all Clarity versions when executed in Epoch 3.4 or later. + +All contracts that use `at-block`, regardless of the target block, will fail after Epoch 3.4 activates. This is an intentional and necessary trade-off to enable future chainstate pruning. + +There are no changes to the chainstate database schemas in this SIP. Everyone who runs a Stacks node today will be able to upgrade to the Epoch 3.4 release and continue operating from their existing chainstate. + +# Activation + +This SIP will be a rider on SIP-039. It will be considered activated if and only if SIP-039 is activated and, as such, should be considered in the vote specified therein. + +# Reference Implementation + +Implementation of this SIP is in [at-blcok deprecation](https://github.com/stacks-network/stacks-core/pull/6937). From 3768161e5b3be120f126350bcb5ec224ad81dcbe Mon Sep 17 00:00:00 2001 From: francesco Date: Sat, 28 Feb 2026 16:52:09 +0000 Subject: [PATCH 02/14] specify the removal of at-block in Clarity5 --- sips/sip-041/sip-at-block-deprecation.md | 40 ++++++++++++------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/sips/sip-041/sip-at-block-deprecation.md b/sips/sip-041/sip-at-block-deprecation.md index 48df9ddb..e1636b14 100644 --- a/sips/sip-041/sip-at-block-deprecation.md +++ b/sips/sip-041/sip-at-block-deprecation.md @@ -28,7 +28,7 @@ Discussions-To: # Abstract -This SIP deprecates the `at-block` built-in in Clarity. Starting from Epoch 3.4, all invocations of `at-block` will fail unconditionally, regardless of which block is referenced or which Clarity version the contract was deployed with. New contracts that use `at-block` will fail static analysis and cannot be deployed. Existing contracts that invoke `at-block` will receive a runtime error. +This SIP deprecates the at-block built-in in Clarity, effective from Epoch 3.4. After activation, new contracts that reference at-block will fail during static analysis, and existing contracts that invoke it will fail at runtime. This removes the only mechanism that requires nodes to retain the full historical MARF, enabling future chainstate pruning. # Copyright @@ -46,9 +46,9 @@ Where `id-block-hash` is a 32-byte buffer identifying a Stacks block, and `expr` Currently, `at-block` can reference any block in the chain's history, all the way back to the genesis block. This unbounded lookback forces every Stacks node to maintain the full historical MARF, tracking the value of every key at every point in history. -On mainnet, the chainstate has grown to approximately 1 TB, of which roughly 95% is consumed by the MARF's historical data. This growth has accelerated significantly since the activation of Nakamoto, making chainstate storage an increasingly urgent concern for node operators. As of 02/20/26, the chain grows by \~2.73GB/day. +On mainnet, the chainstate has grown to approximately 1 TB, of which roughly 95% is consumed by the MARF's historical data. This growth has accelerated significantly since the activation of Nakamoto, making chainstate storage an increasingly urgent concern for node operators. As of 02/20/26, the chain grows by ~2.73 GB/day. -Deprecating `at-block` entirely removes the only mechanism that requires nodes to retain the full MARF history. This is a prerequisite for future MARF pruning and will enable aggressive chainstate reduction. +Deprecating `at-block` entirely removes the only mechanism that requires nodes to retain this history and is a prerequisite for future MARF pruning. ## Design Goals @@ -57,26 +57,30 @@ Deprecating `at-block` entirely removes the only mechanism that requires nodes t # Specification -Starting from Epoch 3.4, the `at-block` built-in is **disabled entirely**. This is enforced at two levels: +Starting from Epoch 3.4, `at-block` is disabled across all Clarity versions. The enforcement mechanism differs depending on the Clarity version and execution phase. -**Static analysis (new deployments):** When a contract is deployed in Epoch 3.4 or later, the type checker rejects any use of `at-block` with a `StaticCheckError` of kind `AtBlockUnavailable`. The deployment transaction is included in the block, it fails, and the miner collects the fee. +## Static Analysis (New Deployments) -**Runtime (existing contracts):** When an already deployed contract invokes `at-block` during Epoch 3.4 or later, the VM immediately aborts with a `RuntimeCheckError` of kind `AtBlockUnavailable`, without evaluating the block hash argument or the closure. The enclosing transaction is included in the block, it fails, and the miner collects the fee. +In Epoch 3.4+, any contract that references `at-block` will be rejected during analysis: -## Epoch Gating +- **Clarity 1–4:** The type checker rejects `at-block` with `StaticCheckErrorKind::AtBlockUnavailable`. The keyword remains syntactically present in the language surface, but is gated by epoch. +- **Clarity 5+:** `at-block` is removed from the set of registered native functions entirely, so the analyzer rejects it as `UnknownFunction("at-block")`. -The deprecation is **only enforced in Epoch 3.4 and later**. For all prior epochs, the existing behavior is preserved. This means: +In both cases, the deployment transaction is included in the block, it fails, and the miner collects the fee. -- Blocks produced before the Epoch 3.4 activation height are validated using the old rules, regardless of when they are replayed. -- Starting at the Epoch 3.4 activation height, any invocation of `at-block`, including from contracts deployed in earlier epochs and earlier Clarity versions, will fail with `AtBlockUnavailable`. +## Runtime (Existing Contracts) -This is an epoch-level behavioral change, not a Clarity-version-level change. A contract deployed using Clarity 1 that calls `at-block` will still be subject to the deprecation when executed during Epoch 3.4. This is necessary because the deprecation is a property of the node's storage guarantees, not a property of the contract's language version. +When an already-deployed Clarity 1–4 contract invokes `at-block` during Epoch 3.4 or later, the VM immediately aborts with a `RuntimeCheckError` of kind `AtBlockUnavailable`, without evaluating the block hash argument or the closure. The enclosing transaction is included in the block, it fails, and the miner collects the fee. -## Impact on Existing Contracts +This only applies to Clarity 1–4, since Clarity 5+ contracts cannot contain `at-block` references (they would have been rejected at deploy time). + +## Epoch Gating -Any deployed contract that calls `at-block` will begin receiving runtime errors after Epoch 3.4 activates. This is a semantic change to existing contract behavior. +The `AtBlockUnavailable` behavior is enforced exclusively in Epoch 3.4 and later. Blocks produced before the activation height are validated using the prior rules, regardless of when they are replayed. No previously valid block is invalidated by this change. -Based on analysis of historical mainnet transactions, the number of contracts affected is expected to be very small. The practical usage of `at-block` on mainnet is limited, and contracts that do use it can be redeployed without `at-block` calls prior to Epoch 3.4 activation. +## Impact on Existing Contracts + +Any deployed contract that calls `at-block` will begin receiving runtime errors after Epoch 3.4 activates. The practical usage of `at-block` on mainnet is limited, and affected contracts can be redeployed without `at-block` calls prior to activation. # Related Work @@ -85,11 +89,7 @@ Based on analysis of historical mainnet transactions, the number of contracts af # Backwards Compatibility -This SIP introduces a breaking change to the existing `at-block` built-in for all Clarity versions when executed in Epoch 3.4 or later. - -All contracts that use `at-block`, regardless of the target block, will fail after Epoch 3.4 activates. This is an intentional and necessary trade-off to enable future chainstate pruning. - -There are no changes to the chainstate database schemas in this SIP. Everyone who runs a Stacks node today will be able to upgrade to the Epoch 3.4 release and continue operating from their existing chainstate. +This SIP introduces a breaking change: after Epoch 3.4 activates, `at-block` cannot be used successfully in any Clarity version. This is an intentional and necessary trade-off to enable future chainstate pruning. # Activation @@ -97,4 +97,4 @@ This SIP will be a rider on SIP-039. It will be considered activated if and only # Reference Implementation -Implementation of this SIP is in [at-blcok deprecation](https://github.com/stacks-network/stacks-core/pull/6937). +Implementation of this SIP is in [at-block deprecation](https://github.com/stacks-network/stacks-core/pull/6937). From 5698290d389d451a8d6802566f47cc8354db600e Mon Sep 17 00:00:00 2001 From: francesco Date: Mon, 2 Mar 2026 15:29:17 +0000 Subject: [PATCH 03/14] remove sip number --- .../sip-at-block-deprecation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename sips/{sip-041 => sip-at-block-deprecation}/sip-at-block-deprecation.md (99%) diff --git a/sips/sip-041/sip-at-block-deprecation.md b/sips/sip-at-block-deprecation/sip-at-block-deprecation.md similarity index 99% rename from sips/sip-041/sip-at-block-deprecation.md rename to sips/sip-at-block-deprecation/sip-at-block-deprecation.md index e1636b14..e6342bec 100644 --- a/sips/sip-041/sip-at-block-deprecation.md +++ b/sips/sip-at-block-deprecation/sip-at-block-deprecation.md @@ -1,6 +1,6 @@ # Preamble -SIP Number: 041 +SIP Number: TBD Title: Deprecation of `at-block` From 6c650ee66c91a9b86f88892d7981c8e64c9ff662 Mon Sep 17 00:00:00 2001 From: francesco Date: Tue, 3 Mar 2026 10:07:04 +0000 Subject: [PATCH 04/14] deprecation -> removal --- .../sip-removal-of-at-block.md} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename sips/{sip-at-block-deprecation/sip-at-block-deprecation.md => sip-removal-of-at-block/sip-removal-of-at-block.md} (87%) diff --git a/sips/sip-at-block-deprecation/sip-at-block-deprecation.md b/sips/sip-removal-of-at-block/sip-removal-of-at-block.md similarity index 87% rename from sips/sip-at-block-deprecation/sip-at-block-deprecation.md rename to sips/sip-removal-of-at-block/sip-removal-of-at-block.md index e6342bec..599c4b1c 100644 --- a/sips/sip-at-block-deprecation/sip-at-block-deprecation.md +++ b/sips/sip-removal-of-at-block/sip-removal-of-at-block.md @@ -2,7 +2,7 @@ SIP Number: TBD -Title: Deprecation of `at-block` +Title: Removal of `at-block` Author(s): @@ -28,7 +28,7 @@ Discussions-To: # Abstract -This SIP deprecates the at-block built-in in Clarity, effective from Epoch 3.4. After activation, new contracts that reference at-block will fail during static analysis, and existing contracts that invoke it will fail at runtime. This removes the only mechanism that requires nodes to retain the full historical MARF, enabling future chainstate pruning. +This SIP proposes to removal of the `at-block` built-in in Clarity, effective from Epoch 3.4. After activation, new contracts that reference `at-block` will fail during static analysis, and existing contracts that invoke it will fail at runtime. This removes the only mechanism that requires nodes to retain the full historical MARF, enabling future chainstate pruning. # Copyright @@ -48,7 +48,7 @@ Currently, `at-block` can reference any block in the chain's history, all the wa On mainnet, the chainstate has grown to approximately 1 TB, of which roughly 95% is consumed by the MARF's historical data. This growth has accelerated significantly since the activation of Nakamoto, making chainstate storage an increasingly urgent concern for node operators. As of 02/20/26, the chain grows by ~2.73 GB/day. -Deprecating `at-block` entirely removes the only mechanism that requires nodes to retain this history and is a prerequisite for future MARF pruning. +Removing `at-block` eliminates the only mechanism that requires nodes to retain this history and is a prerequisite for future MARF pruning. ## Design Goals @@ -97,4 +97,4 @@ This SIP will be a rider on SIP-039. It will be considered activated if and only # Reference Implementation -Implementation of this SIP is in [at-block deprecation](https://github.com/stacks-network/stacks-core/pull/6937). +Implementation of this SIP is in [at-block removal](https://github.com/stacks-network/stacks-core/pull/6937). From 59cabdcb3eebd6d8fb0c5087f118db6a6cf8db24 Mon Sep 17 00:00:00 2001 From: francesco Date: Wed, 4 Mar 2026 15:30:40 +0000 Subject: [PATCH 05/14] rename sip 042. Add link to issue tracking pruned nodes --- .../sip-removal-of-at-block.md => sip-042/sip-042.md} | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) rename sips/{sip-removal-of-at-block/sip-removal-of-at-block.md => sip-042/sip-042.md} (89%) diff --git a/sips/sip-removal-of-at-block/sip-removal-of-at-block.md b/sips/sip-042/sip-042.md similarity index 89% rename from sips/sip-removal-of-at-block/sip-removal-of-at-block.md rename to sips/sip-042/sip-042.md index 599c4b1c..0e1f0f31 100644 --- a/sips/sip-removal-of-at-block/sip-removal-of-at-block.md +++ b/sips/sip-042/sip-042.md @@ -1,6 +1,6 @@ # Preamble -SIP Number: TBD +SIP Number: 042 Title: Removal of `at-block` @@ -28,7 +28,7 @@ Discussions-To: # Abstract -This SIP proposes to removal of the `at-block` built-in in Clarity, effective from Epoch 3.4. After activation, new contracts that reference `at-block` will fail during static analysis, and existing contracts that invoke it will fail at runtime. This removes the only mechanism that requires nodes to retain the full historical MARF, enabling future chainstate pruning. +This SIP proposes the removal of the `at-block` built-in function in Clarity, effective from Epoch 3.4. Following activation of this SIP, new contracts that reference `at-block` will fail during static analysis, and existing contracts that invoke it will fail at runtime. This removes the only mechanism that requires nodes to retain the full historical MARF, enabling future chainstate pruning. # Copyright @@ -85,8 +85,10 @@ Any deployed contract that calls `at-block` will begin receiving runtime errors # Related Work - [SIP-002](https://github.com/stacksgov/sips/blob/main/sips/sip-002/sip-002-smart-contract-language.md) defines the Clarity smart contract language, including the original unbounded `at-block` built-in function. +- Pruned nodes: Issue tracking work for pruned nodes [stacks-network/stacks-core#6953](https://github.com/stacks-network/stacks-core/issues/6953). - This SIP will activate in Epoch 3.4 together with SIP-039 and SIP-040. + # Backwards Compatibility This SIP introduces a breaking change: after Epoch 3.4 activates, `at-block` cannot be used successfully in any Clarity version. This is an intentional and necessary trade-off to enable future chainstate pruning. From 70ac2e2a6a0532736e7071079e1fc791d3864524 Mon Sep 17 00:00:00 2001 From: francesco Date: Thu, 5 Mar 2026 11:59:26 +0000 Subject: [PATCH 06/14] change status to Accepted --- sips/sip-042/sip-042.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sips/sip-042/sip-042.md b/sips/sip-042/sip-042.md index 0e1f0f31..905f88e1 100644 --- a/sips/sip-042/sip-042.md +++ b/sips/sip-042/sip-042.md @@ -8,7 +8,7 @@ Author(s): - Francesco Leacche [francesco@stackslabs.com](mailto:francesco@stackslabs.com) -Status: Draft +Status: Accepted Consideration: Technical From 5d9c76b6b3b119439439b94531991ba11bbba036 Mon Sep 17 00:00:00 2001 From: francesco Date: Thu, 5 Mar 2026 12:01:39 +0000 Subject: [PATCH 07/14] add footnote to pruned node issue. remove sip 002 and sips 039 and 040 from related work --- sips/sip-042/sip-042.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/sips/sip-042/sip-042.md b/sips/sip-042/sip-042.md index 905f88e1..713978be 100644 --- a/sips/sip-042/sip-042.md +++ b/sips/sip-042/sip-042.md @@ -28,7 +28,7 @@ Discussions-To: # Abstract -This SIP proposes the removal of the `at-block` built-in function in Clarity, effective from Epoch 3.4. Following activation of this SIP, new contracts that reference `at-block` will fail during static analysis, and existing contracts that invoke it will fail at runtime. This removes the only mechanism that requires nodes to retain the full historical MARF, enabling future chainstate pruning. +This SIP proposes the removal of the `at-block` built-in function in Clarity, effective from Epoch 3.4. Following activation of this SIP, new contracts that reference `at-block` will fail during static analysis, and existing contracts that invoke it will fail at runtime. This removes the only mechanism that requires nodes to retain the full historical MARF, enabling future chainstate pruning[1]. # Copyright @@ -48,7 +48,7 @@ Currently, `at-block` can reference any block in the chain's history, all the wa On mainnet, the chainstate has grown to approximately 1 TB, of which roughly 95% is consumed by the MARF's historical data. This growth has accelerated significantly since the activation of Nakamoto, making chainstate storage an increasingly urgent concern for node operators. As of 02/20/26, the chain grows by ~2.73 GB/day. -Removing `at-block` eliminates the only mechanism that requires nodes to retain this history and is a prerequisite for future MARF pruning. +Removing `at-block` eliminates the only mechanism that requires nodes to retain this history and is a prerequisite for future MARF pruning[1]. ## Design Goals @@ -84,14 +84,12 @@ Any deployed contract that calls `at-block` will begin receiving runtime errors # Related Work -- [SIP-002](https://github.com/stacksgov/sips/blob/main/sips/sip-002/sip-002-smart-contract-language.md) defines the Clarity smart contract language, including the original unbounded `at-block` built-in function. -- Pruned nodes: Issue tracking work for pruned nodes [stacks-network/stacks-core#6953](https://github.com/stacks-network/stacks-core/issues/6953). -- This SIP will activate in Epoch 3.4 together with SIP-039 and SIP-040. +- [1] https://github.com/stacks-network/stacks-core/issues/6953. # Backwards Compatibility -This SIP introduces a breaking change: after Epoch 3.4 activates, `at-block` cannot be used successfully in any Clarity version. This is an intentional and necessary trade-off to enable future chainstate pruning. +This SIP introduces a breaking change: after Epoch 3.4 activates, `at-block` cannot be used successfully in any Clarity version. This is an intentional and necessary trade-off to enable future chainstate pruning[1]. # Activation From 33a661fb68cc6a3ef343e6ff6c6958fddcc0c6f6 Mon Sep 17 00:00:00 2001 From: francesco Date: Thu, 5 Mar 2026 12:02:21 +0000 Subject: [PATCH 08/14] crc: address rephrase suggestions --- sips/sip-042/sip-042.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sips/sip-042/sip-042.md b/sips/sip-042/sip-042.md index 713978be..48a20480 100644 --- a/sips/sip-042/sip-042.md +++ b/sips/sip-042/sip-042.md @@ -57,7 +57,7 @@ Removing `at-block` eliminates the only mechanism that requires nodes to retain # Specification -Starting from Epoch 3.4, `at-block` is disabled across all Clarity versions. The enforcement mechanism differs depending on the Clarity version and execution phase. +Starting from Epoch 3.4, `at-block` shall be disabled across all Clarity versions. The enforcement mechanism differs depending on the Clarity version and execution phase. ## Static Analysis (New Deployments) @@ -72,7 +72,7 @@ In both cases, the deployment transaction is included in the block, it fails, an When an already-deployed Clarity 1–4 contract invokes `at-block` during Epoch 3.4 or later, the VM immediately aborts with a `RuntimeCheckError` of kind `AtBlockUnavailable`, without evaluating the block hash argument or the closure. The enclosing transaction is included in the block, it fails, and the miner collects the fee. -This only applies to Clarity 1–4, since Clarity 5+ contracts cannot contain `at-block` references (they would have been rejected at deploy time). +This change only applies to Clarity 1-4, since Clarity 5+ contracts cannot contain `at-block` references, as they shall be rejected at deploy time. ## Epoch Gating @@ -97,4 +97,4 @@ This SIP will be a rider on SIP-039. It will be considered activated if and only # Reference Implementation -Implementation of this SIP is in [at-block removal](https://github.com/stacks-network/stacks-core/pull/6937). +Implementation of this SIP can be found at https://github.com/stacks-network/stacks-core/pull/6937. From 3eb74ff2a045fc299ecc507f19f44b1b3564f13e Mon Sep 17 00:00:00 2001 From: francesco Date: Fri, 6 Mar 2026 10:20:32 +0000 Subject: [PATCH 09/14] add back sip-002 reference --- sips/sip-042/sip-042.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sips/sip-042/sip-042.md b/sips/sip-042/sip-042.md index 48a20480..9b0c425b 100644 --- a/sips/sip-042/sip-042.md +++ b/sips/sip-042/sip-042.md @@ -85,7 +85,7 @@ Any deployed contract that calls `at-block` will begin receiving runtime errors # Related Work - [1] https://github.com/stacks-network/stacks-core/issues/6953. - +- [SIP-002](https://github.com/stacksgov/sips/blob/main/sips/sip-002/sip-002-smart-contract-language.md) defines the Clarity smart contract language, including the original unbounded `at-block` built-in function. # Backwards Compatibility From 8ae0cde419c345d8971bd4aab537fd96c8ee3278 Mon Sep 17 00:00:00 2001 From: francesco Date: Mon, 9 Mar 2026 10:44:20 +0000 Subject: [PATCH 10/14] author on single line, removed bullet list --- sips/sip-042/sip-042.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/sips/sip-042/sip-042.md b/sips/sip-042/sip-042.md index 9b0c425b..cd8796d8 100644 --- a/sips/sip-042/sip-042.md +++ b/sips/sip-042/sip-042.md @@ -4,9 +4,7 @@ SIP Number: 042 Title: Removal of `at-block` -Author(s): - -- Francesco Leacche [francesco@stackslabs.com](mailto:francesco@stackslabs.com) +Author: Francesco Leacche [francesco@stackslabs.com](mailto:francesco@stackslabs.com) Status: Accepted From 1dda4ab59c81e320e7861475240b006492bc19ca Mon Sep 17 00:00:00 2001 From: francesco Date: Mon, 9 Mar 2026 10:59:38 +0000 Subject: [PATCH 11/14] crc: address review style and formatting feedback --- sips/sip-042/sip-042.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/sips/sip-042/sip-042.md b/sips/sip-042/sip-042.md index cd8796d8..b1be0bd3 100644 --- a/sips/sip-042/sip-042.md +++ b/sips/sip-042/sip-042.md @@ -26,7 +26,7 @@ Discussions-To: # Abstract -This SIP proposes the removal of the `at-block` built-in function in Clarity, effective from Epoch 3.4. Following activation of this SIP, new contracts that reference `at-block` will fail during static analysis, and existing contracts that invoke it will fail at runtime. This removes the only mechanism that requires nodes to retain the full historical MARF, enabling future chainstate pruning[1]. +This SIP removes the `at-block` built-in function from Clarity starting in Epoch 3.4. After activation, contracts referencing `at-block` fail static analysis during deployment. Existing deployed contracts that invoke `at-block` fail at runtime. This removes the only mechanism that requires nodes to retain the full historical MARF, enabling future chainstate pruning[1]. # Copyright @@ -42,9 +42,9 @@ The `at-block` function in Clarity (originally defined in SIP-002) allows contra Where `id-block-hash` is a 32-byte buffer identifying a Stacks block, and `expr` is a read-only expression to evaluate in the context of that block's state. -Currently, `at-block` can reference any block in the chain's history, all the way back to the genesis block. This unbounded lookback forces every Stacks node to maintain the full historical MARF, tracking the value of every key at every point in history. +Currently, `at-block` can reference any block in the chain's history, including the genesis block. This unbounded lookback requires each node to retain the full historical MARF (Merkleized Adaptive Radix Forest), which records all key-value state changes. -On mainnet, the chainstate has grown to approximately 1 TB, of which roughly 95% is consumed by the MARF's historical data. This growth has accelerated significantly since the activation of Nakamoto, making chainstate storage an increasingly urgent concern for node operators. As of 02/20/26, the chain grows by ~2.73 GB/day. +On mainnet, the chainstate has grown to approximately 1 TB, of which roughly 95% is consumed by the MARF's historical data. This growth has accelerated significantly since the activation of Nakamoto, making chainstate storage an increasingly urgent concern for node operators. As of 2026-02-20, chainstate growth averages approximately 2.73 GB per day. Removing `at-block` eliminates the only mechanism that requires nodes to retain this history and is a prerequisite for future MARF pruning[1]. @@ -55,43 +55,43 @@ Removing `at-block` eliminates the only mechanism that requires nodes to retain # Specification -Starting from Epoch 3.4, `at-block` shall be disabled across all Clarity versions. The enforcement mechanism differs depending on the Clarity version and execution phase. +Starting from Epoch 3.4, the `at-block` function MUST be disabled across all Clarity versions. The enforcement mechanism differs depending on the Clarity version and execution phase. ## Static Analysis (New Deployments) -In Epoch 3.4+, any contract that references `at-block` will be rejected during analysis: +In Epoch 3.4 and later, any contract that references `at-block` will be rejected during analysis: -- **Clarity 1–4:** The type checker rejects `at-block` with `StaticCheckErrorKind::AtBlockUnavailable`. The keyword remains syntactically present in the language surface, but is gated by epoch. +- **Clarity versions 1–4:** The type checker rejects `at-block` with `StaticCheckErrorKind::AtBlockUnavailable`. The keyword remains syntactically present in the language surface, but is gated by epoch. - **Clarity 5+:** `at-block` is removed from the set of registered native functions entirely, so the analyzer rejects it as `UnknownFunction("at-block")`. In both cases, the deployment transaction is included in the block, it fails, and the miner collects the fee. ## Runtime (Existing Contracts) -When an already-deployed Clarity 1–4 contract invokes `at-block` during Epoch 3.4 or later, the VM immediately aborts with a `RuntimeCheckError` of kind `AtBlockUnavailable`, without evaluating the block hash argument or the closure. The enclosing transaction is included in the block, it fails, and the miner collects the fee. +When an already-deployed Clarity 1–4 contract invokes `at-block` during Epoch 3.4 or later, the Clarity Virtual Machine (VM) aborts execution with a `RuntimeCheckError` of type `AtBlockUnavailable`, without evaluating the block hash argument or the closure. The enclosing transaction is included in the block, it fails, and the miner collects the fee. This change only applies to Clarity 1-4, since Clarity 5+ contracts cannot contain `at-block` references, as they shall be rejected at deploy time. ## Epoch Gating -The `AtBlockUnavailable` behavior is enforced exclusively in Epoch 3.4 and later. Blocks produced before the activation height are validated using the prior rules, regardless of when they are replayed. No previously valid block is invalidated by this change. +The `AtBlockUnavailable` behavior is enforced exclusively in Epoch 3.4 and later. Blocks produced before the activation height remain valid and are validated under the prior rules, even when replayed after activation. No previously valid block is invalidated by this change. ## Impact on Existing Contracts -Any deployed contract that calls `at-block` will begin receiving runtime errors after Epoch 3.4 activates. The practical usage of `at-block` on mainnet is limited, and affected contracts can be redeployed without `at-block` calls prior to activation. +Any deployed contract that calls `at-block` will begin receiving runtime errors after Epoch 3.4 activates. Observed usage of `at-block` on mainnet is limited, and affected contracts can be redeployed without `at-block` calls prior to activation. # Related Work -- [1] https://github.com/stacks-network/stacks-core/issues/6953. +- [1] Chainstate pruning discussion: https://github.com/stacks-network/stacks-core/issues/6953. - [SIP-002](https://github.com/stacksgov/sips/blob/main/sips/sip-002/sip-002-smart-contract-language.md) defines the Clarity smart contract language, including the original unbounded `at-block` built-in function. # Backwards Compatibility -This SIP introduces a breaking change: after Epoch 3.4 activates, `at-block` cannot be used successfully in any Clarity version. This is an intentional and necessary trade-off to enable future chainstate pruning[1]. +This SIP introduces a consensus breaking change: after Epoch 3.4 activates, `at-block` cannot be used successfully in any Clarity version. This is an intentional and necessary trade-off to enable future chainstate pruning[1]. # Activation -This SIP will be a rider on SIP-039. It will be considered activated if and only if SIP-039 is activated and, as such, should be considered in the vote specified therein. +This SIP is a rider on SIP-039 and activates according to the voting procedure defined in SIP-039. # Reference Implementation From 96c1b8371767aa4092676457343884a8d0f16547 Mon Sep 17 00:00:00 2001 From: wileyj <2847772+wileyj@users.noreply.github.com> Date: Mon, 9 Mar 2026 13:46:19 -0700 Subject: [PATCH 12/14] Move to Activation-In-Progress --- sips/sip-042/sip-042.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sips/sip-042/sip-042.md b/sips/sip-042/sip-042.md index b1be0bd3..2cdd4f1b 100644 --- a/sips/sip-042/sip-042.md +++ b/sips/sip-042/sip-042.md @@ -6,7 +6,7 @@ Title: Removal of `at-block` Author: Francesco Leacche [francesco@stackslabs.com](mailto:francesco@stackslabs.com) -Status: Accepted +Status: Activation-In-Progress Consideration: Technical From ba4db1724dc7dfc794b62b5543b98aba6732b884 Mon Sep 17 00:00:00 2001 From: francesco Date: Tue, 10 Mar 2026 13:13:14 +0000 Subject: [PATCH 13/14] add at-block usage data --- sips/sip-042/at-block-direct-contracts.csv | 125 ++++++++++++++++++ .../at-block-indirect-contract-callers.csv | 107 +++++++++++++++ sips/sip-042/at-block-usage-analysis.md | 29 ++++ sips/sip-042/sip-042.md | 1 + 4 files changed, 262 insertions(+) create mode 100644 sips/sip-042/at-block-direct-contracts.csv create mode 100644 sips/sip-042/at-block-indirect-contract-callers.csv create mode 100644 sips/sip-042/at-block-usage-analysis.md diff --git a/sips/sip-042/at-block-direct-contracts.csv b/sips/sip-042/at-block-direct-contracts.csv new file mode 100644 index 00000000..b4c11229 --- /dev/null +++ b/sips/sip-042/at-block-direct-contracts.csv @@ -0,0 +1,125 @@ +contract +SP1413DDVECH9RVTZ13TT2V4X2Q2B6E8TZEMQG7MH.rewards-dual-stacking-granite +SP18S207EH21322SQMGY7S5J301AGWFWDECAM0002.rewards-sbtc-alex +SP1CKTPH1J9B9VBVAVHKWMDRSPJJPNZGJ1BYYDM3A.rewards-sbtc-zest +SP1CKTPH1J9B9VBVAVHKWMDRSPJJPNZGJ1BYYDM3A.rewards-sbtc-zest-v2 +SP1CKTPH1J9B9VBVAVHKWMDRSPJJPNZGJ1BYYDM3A.rewards-sbtc-zest-v3 +SP1E0XBN9T4B10E9QMR7XMFJPMA19D77WY3KP2QKC.farming-campaign-v2-03 +SP1HFCRKEJ8BYW4D0E3FAWHFDX8A25PPAA83HWWZ9.dual-stacking-v1 +SP1HFCRKEJ8BYW4D0E3FAWHFDX8A25PPAA83HWWZ9.dual-stacking-v2_0_2 +SP1HFCRKEJ8BYW4D0E3FAWHFDX8A25PPAA83HWWZ9.dual-stacking-v2_0_4 +SP1HFCRKEJ8BYW4D0E3FAWHFDX8A25PPAA83HWWZ9.liquid-stacking-v1_0_1 +SP1HFCRKEJ8BYW4D0E3FAWHFDX8A25PPAA83HWWZ9.liquid-stacking-v2 +SP1JZ89NV29EEGKJ10TH5ZQVRV9N9392FAQCMB5X8.gl-fees +SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.agp530 +SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.agp534 +SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.agp535 +SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.agp537 +SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.agp538 +SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.agp555 +SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.agp603 +SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.alex-voting-power-v1-02 +SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.treasury-grant-v4-1 +SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.treasury-grant-v4-2 +SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.treasury-grant-v4-3 +SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.treasury-grant-v4-4 +SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.treasury-grant-v4-4-dev-1 +SP1RWWGDA73413BH9Q4G3ZFE55QJ14AGYWGPC4N0F.rewards-dual-stacking-velar +SP1SATBEBG20HT1J9YNEXN2SPT7Q82H29P8AXKF0K.gl-fees +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.curve-farming-core-v1_1_0-0001 +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-velar-stx-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-velar-usdc-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-edmund-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-leo-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-long-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-memegoat-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-odintkn-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-pepe-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-rock-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-roo-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-scha-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-some-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-stone-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-ten-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-walter-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-welsh-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.gl-fees +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-core-v1_0_0-0001 +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-core-v1_0_0-0003 +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-core-v1_0_0-0004 +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-core-v1_0_0-0009 +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-core-v1_0_0-0015 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.curve-farming-core-v1_1_1_ststx-0001 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0026 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0029 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0030 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0050 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0059 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0063 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0064 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0070 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0078 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0118 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0124 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0152 +SP27237SX8784MWJK0RN73M0NK270KMY33F6WNXHH.gl-fees +SP28WXEA1SKAX69TKEE6ZQS57DRDB2A6FCF8D5F53.rewards-dual-stacking-zest-v1 +SP28WXEA1SKAX69TKEE6ZQS57DRDB2A6FCF8D5F53.track-dual-stacking-zest +SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-diko-guardian-v3-1 +SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-liquidation-pool-v1-1 +SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.lydian-airdrop-v1-1 +SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.lydian-airdrop-v1-2 +SP2D5BGGJ956A635JG7CJQ59FTRFRB0893514EZPJ.charismatic-flow-hold-to-earn +SP2D5BGGJ956A635JG7CJQ59FTRFRB0893514EZPJ.dexterity-hold-to-earn +SP2D5BGGJ956A635JG7CJQ59FTRFRB0893514EZPJ.perseverantia-omnia-vincit-hold-to-earn +SP2DRD227X2VY5KEC5V663RRS2PMMG9WB6D2HPVC.ballot-btc-dust-voting-5KGA3 +SP2DRD227X2VY5KEC5V663RRS2PMMG9WB6D2HPVC.ballot-dust-polling-wit-t7nYv +SP2DRD227X2VY5KEC5V663RRS2PMMG9WB6D2HPVC.ballot-sip-031-five-yea-H4vhP +SP2MJRGS2CRY5D06GPRZ4WA6R6SZM6CC3E3JH6CGX.dual-stacking-v2-test-ratios +SP2MJRGS2CRY5D06GPRZ4WA6R6SZM6CC3E3JH6CGX.dual-stacking-v2-test-snapshots +SP2MJRGS2CRY5D06GPRZ4WA6R6SZM6CC3E3JH6CGX.dual-stacking-v2-testing +SP2MJRGS2CRY5D06GPRZ4WA6R6SZM6CC3E3JH6CGX.dual-stacking-v2_0_1-testing +SP2MJRGS2CRY5D06GPRZ4WA6R6SZM6CC3E3JH6CGX.liquid-stacking-v2 +SP2MP60KGE9BWS26TE5MDC4J88BSDZMG8JKJ3TM8V.rewards-dual-stacking-based-dollar +SP2PABAF9FTAJYNFZH93XENAJ8FVY99RRM50D2JG9.ccip016-missed-payouts +SP2PABAF9FTAJYNFZH93XENAJ8FVY99RRM50D2JG9.ccip016-missed-payouts-v3 +SP2PAP9RH99G2HM6N2D7SVS53V05TDAPZ1B2FBWXV.rewards-sbtc-velar +SP2PAP9RH99G2HM6N2D7SVS53V05TDAPZ1B2FBWXV.rewards-sbtc-velar-v2 +SP2PAP9RH99G2HM6N2D7SVS53V05TDAPZ1B2FBWXV.rewards-sbtc-velar-v3 +SP2PAP9RH99G2HM6N2D7SVS53V05TDAPZ1B2FBWXV.rewards-sbtc-velar-v4 +SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.fake-action-proposal-voting +SP2ZNGJ85ENDY6QRHQ5P2D4FXKGZWCKTB2T0Z55KS.gbab-v0 +SP2ZNGJ85ENDY6QRHQ5P2D4FXKGZWCKTB2T0Z55KS.meme-engine-cha-rc3 +SP2ZNGJ85ENDY6QRHQ5P2D4FXKGZWCKTB2T0Z55KS.meme-engine-iouroo-rc1 +SP2ZNGJ85ENDY6QRHQ5P2D4FXKGZWCKTB2T0Z55KS.meme-engine-iouwelsh-rc1 +SP3CSZFP219B4GD3HM8R8RSWYAS05K7RCTMKTRNRC.gl-fees +SP3JXBJ5CBDGTYJFHM1KFHX4BTR8XWY6W4CQGZ407.rewards-sbtc-bitflow +SP3JXBJ5CBDGTYJFHM1KFHX4BTR8XWY6W4CQGZ407.rewards-sbtc-bitflow-v2 +SP3JXBJ5CBDGTYJFHM1KFHX4BTR8XWY6W4CQGZ407.rewards-sbtc-bitflow-v3 +SP3TB3AJ0XMZ9S6CGY2CQ6R06H1Z6DJQ1SH15ZP2H.ballot-testing-on-the-b-v2nXB +SP3YBY0BH4ANC0Q35QB6PD163F943FVFVDFM1SH7S.gl-fees +SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.block-info-nakamoto-ststx-ratio-v2 +SP804CDG3KBN9M6E00AD744K8DC697G7HBCG520Q.sbtc-yield-rewards-v3 +SP9B1S44NK7SHZX4KX3HW1DXJXZFM4QJH9YHV746.rewards-dual-stacking-bitflow-v1 +SP9B1S44NK7SHZX4KX3HW1DXJXZFM4QJH9YHV746.track-dual-stacking-bitflow +SPFYQRQKM05JA1PNQSA31WHTDA61XGJ1YHZVYC6D.ballot-sip-033-clarity--dPVEX +SPKD09MBBKBD6A3QTEZRMB39J4ZCWCAK7MFPWYFH.rewards-dual-stacking-arkadiko +SPKD09MBBKBD6A3QTEZRMB39J4ZCWCAK7MFPWYFH.rewards-dual-stacking-arkadiko-v1 +SPMA4G7FYX926EQSD0J36B8AN4NS7823H7JRY414.get-sbtc-balances-at-heights-v2 +SPMA4G7FYX926EQSD0J36B8AN4NS7823H7JRY414.get-sbtc-balances-at-heights-v3 +SPMA4G7FYX926EQSD0J36B8AN4NS7823H7JRY414.liquid-stacking +SPMA4G7FYX926EQSD0J36B8AN4NS7823H7JRY414.tree-ground-bear +SPN4WN5SRW2N4AS02ARY38G0HHP0A5TJN24RV5D6.rewards-sbtc-granite +SPN4WN5SRW2N4AS02ARY38G0HHP0A5TJN24RV5D6.rewards-sbtc-granite-v2 +SPN4WN5SRW2N4AS02ARY38G0HHP0A5TJN24RV5D6.rewards-sbtc-granite-v3 +SPSV8N0RCX2FXK0F832PMQ0BD89CGSRJVNJSRDM8.ballot-test-m3h1z +SPSXPRV95D98Y2B2D1H9N2QGKNN4CDF6063KYR3P.rewards-sbtc-arkadiko +SPSXPRV95D98Y2B2D1H9N2QGKNN4CDF6063KYR3P.rewards-sbtc-arkadiko-v2 +SPSXPRV95D98Y2B2D1H9N2QGKNN4CDF6063KYR3P.rewards-sbtc-arkadiko-v3 +SPVG5J8HNE9H5SZDFZDQQZ1AGP9QTTAVT0M7427T.Nakamoto_1_Android +SPVG5J8HNE9H5SZDFZDQQZ1AGP9QTTAVT0M7427T.Nakamoto_1_Level_1 +SPVG5J8HNE9H5SZDFZDQQZ1AGP9QTTAVT0M7427T.Nakamoto_1_Level_2 +SPYCQ7B73NCAWP7B948KAMJ2SCCCQSQDP49TBKAS.rewards-sbtc-alex +SPYCQ7B73NCAWP7B948KAMJ2SCCCQSQDP49TBKAS.rewards-sbtc-alex-v2 +SPYCQ7B73NCAWP7B948KAMJ2SCCCQSQDP49TBKAS.rewards-sbtc-alex-v3 +SPZDJHVW6BVRA79J49X4K7TCKED1QEY1MQNNCFSV.gl-fees diff --git a/sips/sip-042/at-block-indirect-contract-callers.csv b/sips/sip-042/at-block-indirect-contract-callers.csv new file mode 100644 index 00000000..662b8925 --- /dev/null +++ b/sips/sip-042/at-block-indirect-contract-callers.csv @@ -0,0 +1,107 @@ +caller_contract,called_contract +SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.executor-dao,SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.agp530 +SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.executor-dao,SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.agp534 +SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.executor-dao,SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.agp535 +SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.executor-dao,SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.agp537 +SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.executor-dao,SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.agp538 +SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.executor-dao,SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.agp555 +SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.executor-dao,SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.agp603 +SP1HFCRKEJ8BYW4D0E3FAWHFDX8A25PPAA83HWWZ9.dual-stacking-v1,SP1HFCRKEJ8BYW4D0E3FAWHFDX8A25PPAA83HWWZ9.liquid-stacking-v1_0_1 +SP1HFCRKEJ8BYW4D0E3FAWHFDX8A25PPAA83HWWZ9.dual-stacking-v2_0_2,SP1HFCRKEJ8BYW4D0E3FAWHFDX8A25PPAA83HWWZ9.liquid-stacking-v2 +SP1HFCRKEJ8BYW4D0E3FAWHFDX8A25PPAA83HWWZ9.dual-stacking-v2_0_4,SP1HFCRKEJ8BYW4D0E3FAWHFDX8A25PPAA83HWWZ9.liquid-stacking-v2 +SP1HFCRKEJ8BYW4D0E3FAWHFDX8A25PPAA83HWWZ9.liquid-stacking-v1_0_1,SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.block-info-nakamoto-ststx-ratio-v2 +SP1HFCRKEJ8BYW4D0E3FAWHFDX8A25PPAA83HWWZ9.liquid-stacking-v2,SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.block-info-nakamoto-ststx-ratio-v2 +SP1JZ89NV29EEGKJ10TH5ZQVRV9N9392FAQCMB5X8.gl-positions,SP1JZ89NV29EEGKJ10TH5ZQVRV9N9392FAQCMB5X8.gl-fees +SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.agp603,SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.treasury-grant-v4-4 +SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.alex-voting-v1-01,SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.alex-voting-power-v1-02 +SP1SATBEBG20HT1J9YNEXN2SPT7Q82H29P8AXKF0K.gl-positions,SP1SATBEBG20HT1J9YNEXN2SPT7Q82H29P8AXKF0K.gl-fees +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.curve-farming-distributor-1-v1_1_0-0001,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.curve-farming-core-v1_1_0-0001 +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-velar-stx-distributor,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-velar-stx-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-velar-usdc-distributor,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-velar-usdc-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-edmund-distributor,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-edmund-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-leo-distributor,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-leo-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-leo-distributor2,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-leo-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-long-distributor,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-long-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-memegoat-distributor,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-memegoat-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-odintkn-distributor,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-odintkn-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-odintkn-distributor2,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-odintkn-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-pepe-distributor2,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-pepe-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-rock-distributor,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-rock-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-roo-distributor,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-roo-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-roo-distributor2,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-roo-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-scha-distributor2,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-scha-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-some-distributor,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-some-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-stone-distributor,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-stone-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-stone-distributor4,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-stone-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-ten-distributor,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-ten-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-walter-distributor,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-walter-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-welsh-distributor2,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-welsh-core +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.gl-positions,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.gl-fees +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-distributor-1-v1_0_0-0001,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-core-v1_0_0-0001 +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-distributor-1-v1_0_0-0003,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-core-v1_0_0-0003 +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-distributor-1-v1_0_0-0004,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-core-v1_0_0-0004 +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-distributor-1-v1_0_0-0009,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-core-v1_0_0-0009 +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-distributor-1-v1_0_0-0015,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-core-v1_0_0-0015 +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-distributor-2-v1_0_0-0003,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-core-v1_0_0-0003 +SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-distributor-2-v1_0_0-0009,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-core-v1_0_0-0009 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.curve-farming-distributor-1-v1_1_1_ststx,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.curve-farming-core-v1_1_1_ststx-0001 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.farming-wstx-roo-distributor3,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-roo-core +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-1-v1_1_1-0026,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0026 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-1-v1_1_1-0029,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0029 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-1-v1_1_1-0030,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0030 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-1-v1_1_1-0050,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0050 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-1-v1_1_1-0059,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0059 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-1-v1_1_1-0063,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0063 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-1-v1_1_1-0064,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0064 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-1-v1_1_1-0070,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0070 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-1-v1_1_1-0078,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0078 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-1-v1_1_1-0118,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0118 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-1-v1_1_1-0124,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0124 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-1-v1_1_1-0152,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0152 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-2-v1_1_1-0029,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0029 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-2-v1_1_1-0063,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0063 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-2-v1_1_1-0070,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0070 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-3-v1_0_0-0003,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-core-v1_0_0-0003 +SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-distributor-4-v1_0_0-0003,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.univ2-farming-core-v1_0_0-0003 +SP27237SX8784MWJK0RN73M0NK270KMY33F6WNXHH.gl-positions,SP27237SX8784MWJK0RN73M0NK270KMY33F6WNXHH.gl-fees +SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-liquidation-rewards-ui-v2-1,SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-liquidation-pool-v1-1 +SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-liquidation-rewards-ui-v2-3,SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-liquidation-pool-v1-1 +SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-liquidation-rewards-v1-1,SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-liquidation-pool-v1-1 +SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-liquidation-rewards-v1-2,SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-liquidation-pool-v1-1 +SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-stake-registry-v2-1,SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR.arkadiko-diko-guardian-v3-1 +SP2MJRGS2CRY5D06GPRZ4WA6R6SZM6CC3E3JH6CGX.dual-stacking-v2-test-ratios,SP2MJRGS2CRY5D06GPRZ4WA6R6SZM6CC3E3JH6CGX.liquid-stacking-v2 +SP2MJRGS2CRY5D06GPRZ4WA6R6SZM6CC3E3JH6CGX.dual-stacking-v2-test-snapshots,SP2MJRGS2CRY5D06GPRZ4WA6R6SZM6CC3E3JH6CGX.liquid-stacking-v2 +SP2MJRGS2CRY5D06GPRZ4WA6R6SZM6CC3E3JH6CGX.dual-stacking-v2-testing,SP2MJRGS2CRY5D06GPRZ4WA6R6SZM6CC3E3JH6CGX.liquid-stacking-v2 +SP2MJRGS2CRY5D06GPRZ4WA6R6SZM6CC3E3JH6CGX.dual-stacking-v2_0_1-testing,SP2MJRGS2CRY5D06GPRZ4WA6R6SZM6CC3E3JH6CGX.liquid-stacking-v2 +SP2MJRGS2CRY5D06GPRZ4WA6R6SZM6CC3E3JH6CGX.liquid-stacking-v2,SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.block-info-nakamoto-ststx-ratio-v2 +SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.aibtc-acct-SP168-57WJ2-SP103-2K314,SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.fake-action-proposal-voting +SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.aibtc-acct-SP16P-KWAKS-SP25B-BPE09,SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.fake-action-proposal-voting +SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.aibtc-acct-SP1E0-B62T1-SP328-2VDFF,SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.fake-action-proposal-voting +SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.aibtc-acct-SP1M8-HN17B-SP15B-X3R39,SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.fake-action-proposal-voting +SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.aibtc-acct-SP1NJ-JV57J-SP1YN-KT3EN,SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.fake-action-proposal-voting +SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.aibtc-acct-SP1Q5-9330A-SP3KQ-SG355,SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.fake-action-proposal-voting +SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.aibtc-acct-SP1TA-P46F8-SP1GQ-RT00V,SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.fake-action-proposal-voting +SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.aibtc-acct-SP295-P1YC2-SP3PZ-9VNPB,SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.fake-action-proposal-voting +SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.aibtc-acct-SP2EM-9E56V-SP3M3-GRXMA,SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.fake-action-proposal-voting +SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.aibtc-acct-SP31S-EYEXC-SP1CF-7WFDM,SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.fake-action-proposal-voting +SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.aibtc-acct-SPAAJ-TG23C-SP3PS-48VVA,SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.fake-action-proposal-voting +SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.aibtc-acct-SPH7H-JYT2C-SPEA9-HDTDW,SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.fake-action-proposal-voting +SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.aibtc-acct-SPRZ4-WXVDJ-SP2WH-VCQ5B,SP2Z94F6QX847PMXTPJJ2ZCCN79JZDW3PJ4E6ZABY.fake-action-proposal-voting +SP2ZNGJ85ENDY6QRHQ5P2D4FXKGZWCKTB2T0Z55KS.cha-recovery,SP2ZNGJ85ENDY6QRHQ5P2D4FXKGZWCKTB2T0Z55KS.gbab-v0 +SP2ZNGJ85ENDY6QRHQ5P2D4FXKGZWCKTB2T0Z55KS.dungeon-crawler-rc4,SP2ZNGJ85ENDY6QRHQ5P2D4FXKGZWCKTB2T0Z55KS.meme-engine-cha-rc3 +SP2ZNGJ85ENDY6QRHQ5P2D4FXKGZWCKTB2T0Z55KS.dungeon-crawler-rc4,SP2ZNGJ85ENDY6QRHQ5P2D4FXKGZWCKTB2T0Z55KS.meme-engine-iouroo-rc1 +SP2ZNGJ85ENDY6QRHQ5P2D4FXKGZWCKTB2T0Z55KS.dungeon-crawler-rc4,SP2ZNGJ85ENDY6QRHQ5P2D4FXKGZWCKTB2T0Z55KS.meme-engine-iouwelsh-rc1 +SP2ZNGJ85ENDY6QRHQ5P2D4FXKGZWCKTB2T0Z55KS.energize-v1,SP2D5BGGJ956A635JG7CJQ59FTRFRB0893514EZPJ.dexterity-hold-to-earn +SP3CSZFP219B4GD3HM8R8RSWYAS05K7RCTMKTRNRC.gl-positions,SP3CSZFP219B4GD3HM8R8RSWYAS05K7RCTMKTRNRC.gl-fees +SP3YBY0BH4ANC0Q35QB6PD163F943FVFVDFM1SH7S.gl-positions,SP3YBY0BH4ANC0Q35QB6PD163F943FVFVDFM1SH7S.gl-fees +SPD7FTJ7FPSYRRSS2NW7DENE03C17Z0M1QKHN101.farming-distributor-v1_1_1-roons-usdh,SP20X3DC5R091J8B6YPQT638J8NR1W83KN6TN5BJY.univ2-farming-core-v1_1_1-0063 +SPD7FTJ7FPSYRRSS2NW7DENE03C17Z0M1QKHN101.farming-distributor-v1_1_1-velar-stx,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-velar-stx-core +SPD7FTJ7FPSYRRSS2NW7DENE03C17Z0M1QKHN101.farming-distributor-v1_1_1-wstx-pepe,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-pepe-core +SPD7FTJ7FPSYRRSS2NW7DENE03C17Z0M1QKHN101.farming-distributor-v1_1_1-wstx-roo,SP1Y5YSTAHZ88XYK1VPDH24GY0HPX5J4JECTMY4A1.farming-wstx-roo-core +SPGYCP878RYFVT03ZT8TWGPKNYTSQB1578VVXHGE.farmer,SP2D5BGGJ956A635JG7CJQ59FTRFRB0893514EZPJ.perseverantia-omnia-vincit-hold-to-earn +SPGYCP878RYFVT03ZT8TWGPKNYTSQB1578VVXHGE.powerful-farmer,SP2D5BGGJ956A635JG7CJQ59FTRFRB0893514EZPJ.charismatic-flow-hold-to-earn +SPGYCP878RYFVT03ZT8TWGPKNYTSQB1578VVXHGE.powerful-farmer,SP2D5BGGJ956A635JG7CJQ59FTRFRB0893514EZPJ.dexterity-hold-to-earn +SPGYCP878RYFVT03ZT8TWGPKNYTSQB1578VVXHGE.powerful-farmer,SP2D5BGGJ956A635JG7CJQ59FTRFRB0893514EZPJ.perseverantia-omnia-vincit-hold-to-earn +SPGYCP878RYFVT03ZT8TWGPKNYTSQB1578VVXHGE.silky-teal-crow,SP1KK89R86W73SJE6RQNQPRDM471008S9JY4FQA62.treasury-grant-v4-4 +SPMA4G7FYX926EQSD0J36B8AN4NS7823H7JRY414.tree-ground-bear,SPMA4G7FYX926EQSD0J36B8AN4NS7823H7JRY414.liquid-stacking +SPZDJHVW6BVRA79J49X4K7TCKED1QEY1MQNNCFSV.gl-positions,SPZDJHVW6BVRA79J49X4K7TCKED1QEY1MQNNCFSV.gl-fees diff --git a/sips/sip-042/at-block-usage-analysis.md b/sips/sip-042/at-block-usage-analysis.md new file mode 100644 index 00000000..3e7cd90b --- /dev/null +++ b/sips/sip-042/at-block-usage-analysis.md @@ -0,0 +1,29 @@ +# Historical `at-block` Usage Data + +This directory contains supplemental historical data for SIP-042 on mainnet contract calls that used `at-block` at least once during the one-year period ending February 16, 2026. The data spans Stacks blocks 700,000 through 6,588,934. + +## Files +- `at-block-direct-contracts.csv` + - One row per contract that directly executes `at-block` + - Column: + - `contract` +- `at-block-indirect-contract-callers.csv` + - One row per observed indirect relationship where a contract calls another contract that internally executes `at-block` + - Columns: + - `caller_contract` + - `called_contract` + +## Summary + +Observed over the study period: +- Contracts that execute `at-block` directly: 124 +- Unique deployer addresses behind those contracts: 38 +- Contracts that indirectly depend on `at-block`: 96 +- Unique deployer addresses behind those caller contracts: 18 +- Unique deployer addresses across both sets: 41 + +## Notes + +- "Direct" usage means the listed contract itself contains and executes `at-block`. +- "Indirect" usage means the listed caller contract invokes a contract that internally executes `at-block`. +- These files are provided as historical reference data to support discussion of SIP-042. diff --git a/sips/sip-042/sip-042.md b/sips/sip-042/sip-042.md index 2cdd4f1b..ad2a6681 100644 --- a/sips/sip-042/sip-042.md +++ b/sips/sip-042/sip-042.md @@ -84,6 +84,7 @@ Any deployed contract that calls `at-block` will begin receiving runtime errors - [1] Chainstate pruning discussion: https://github.com/stacks-network/stacks-core/issues/6953. - [SIP-002](https://github.com/stacksgov/sips/blob/main/sips/sip-002/sip-002-smart-contract-language.md) defines the Clarity smart contract language, including the original unbounded `at-block` built-in function. +- [Supplemental: `at-block` usage analysis](at-block-usage-analysis.md) - historical mainnet data on contracts that used `at-block` during the one-year period ending February 16, 2026, including the full list of [direct](at-block-direct-contracts.csv) and [indirect](at-block-indirect-contract-callers.csv) contract callers. # Backwards Compatibility From da24c8fffc2501b8999d5fd169e364895283dc98 Mon Sep 17 00:00:00 2001 From: francesco-stacks <235083032+francesco-stacks@users.noreply.github.com> Date: Tue, 10 Mar 2026 17:03:05 +0000 Subject: [PATCH 14/14] Update sips/sip-042/sip-042.md Co-authored-by: wileyj <2847772+wileyj@users.noreply.github.com> --- sips/sip-042/sip-042.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sips/sip-042/sip-042.md b/sips/sip-042/sip-042.md index ad2a6681..1344d244 100644 --- a/sips/sip-042/sip-042.md +++ b/sips/sip-042/sip-042.md @@ -84,7 +84,7 @@ Any deployed contract that calls `at-block` will begin receiving runtime errors - [1] Chainstate pruning discussion: https://github.com/stacks-network/stacks-core/issues/6953. - [SIP-002](https://github.com/stacksgov/sips/blob/main/sips/sip-002/sip-002-smart-contract-language.md) defines the Clarity smart contract language, including the original unbounded `at-block` built-in function. -- [Supplemental: `at-block` usage analysis](at-block-usage-analysis.md) - historical mainnet data on contracts that used `at-block` during the one-year period ending February 16, 2026, including the full list of [direct](at-block-direct-contracts.csv) and [indirect](at-block-indirect-contract-callers.csv) contract callers. +- [Supplemental: `at-block` usage analysis](./at-block-usage-analysis.md) - historical mainnet data on contracts that used `at-block` during the one-year period ending February 16, 2026, including the full list of [direct](./at-block-direct-contracts.csv) and [indirect](./at-block-indirect-contract-callers.csv) contract callers. # Backwards Compatibility