<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Data Redaction in Smart-Contract-Enabled Permissioned Blockchains</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Gennaro Avitabile</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Vincenzo Botta</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Daniele Friolo</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ivan Visconti</string-name>
          <xref ref-type="aff" rid="aff2">2</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>IMDEA Software Institute</institution>
          ,
          <addr-line>Campus de Montegancedo s/n, 28223 Pozuelo de Alarcón, Madrid</addr-line>
          ,
          <country country="ES">Spain</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Sapienza University of Rome</institution>
          ,
          <addr-line>Piazzale Aldo Moro 5, 00185 Rome</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>University of Salerno</institution>
          ,
          <addr-line>Via Giovanni Paolo II, 132, 84084 Fisciano</addr-line>
          ,
          <country country="IT">Italy</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Balancing immutability and compliance with regulations stands as a significant challenge in the realm of blockchain technology applications. Due to the increase of data-protection requirements (e.g., the General Data Protection Regulation (GDPR) in the European Union), it is essential to address the problem of deleting data from a blockchain without compromising the security and transparency of the blockchain itself. Several works proposed techniques to address the data redaction problem, and the most efective ones are mainly applicable to permissioned blockchains. In their seminal work, Ateniese et al. [EuroS&amp;P 2017] were the first to propose a redactable blockchain. Their approach focuses on permissioned blockchains and they showed how to change the content of a transaction without breaking the chaining among blocks by using special cryptographic hash function (i.e., chameleon hash functions) and protocols for secure multi-party computation to make the required distributed computations. We observe that the redaction technique of Ateniese et al. does not take into account the possibility that the blockchain includes smart contracts and that a redaction of a transaction might leave inconsistencies in the logic of the contracts, making some remaining non-redacted transactions invalid. We find this decision rather limiting since decentralized and publicly verifiable computation guaranteed by smart-contract-enabled blockchains is indeed necessary for modern applications. In order to overcome the above limitations of the applicability of the redaction techniques of Ateniese et al., we propose a redaction technique with wider applicability that leverages succinct non-interactive arguments of knowledge (SNARKs) to realize what we call a proof-of-consistency. A SNARK will be computed to show that the current state of a smart contract is consistent with respect to a previous state since there existed transactions, now redacted, that produced the current state from a former publicly verifiable state. Therefore, a successful verification of such a SNARK allows to maintain the consistency of the non-redacted transactions with the state of the smart contract, and the resulting blockchain maintains public verifiability and consistency in the presence of redacted transactions.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Blockchain</kwd>
        <kwd>Redaction</kwd>
        <kwd>Permissioned</kwd>
        <kwd>Smart Contract</kwd>
        <kwd>SNARK</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        Motivated by the widespread adoption of decentralized platforms, and the requirements imposed by the
GDPR and in general by laws, many techniques have been proposed to erase data from blockchains. As
shown by Matzett et al. [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], even a blockchain like Bitcoin, designed only for financial use, stores illegal
data such as child pornography and dark web services. Because of that, some countries could have
banned blockchain usage. A seminal work from Ateniese et al. [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] proposed a technique that allows
to relax the immutability of a blockchain while still maintaining the consistency of its structure (i.e.,
the validity of previously computed hash pointers) through chameleon hash functions. In a nutshell, a
chameleon hash function is a hash function that has a public hash key and a private trapdoor. Unless
the trapdoor is known, this function achieves collision resistance as a standard hash function. In theory,
knowledge of prior collisions could be exploited to find more collisions for an arbitrary new message,
even without knowledge of the trapdoor and this must therefore be considered leading to a special
definition of collision resistance. Two things must be noticed here: (1) their solution requires changing
the specifications of the blockchain to use this hash function; (2) the trapdoor must be kept secret by
someone who is trusted, introducing an additional trust assumption in the blockchain. These two points
make the solution of Ateniese et al. suitable for permissioned blockchains in which the governance
maintaining the blockchain is already trusted (the majority of the parties cooperating within the
governance must be honest) and already controls the blockchain’s consensus. To perform the redaction,
a multi-party computation protocol is executed among all the parties of the consortium. Following the
seminal work of [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] several other works proposed redaction techniques for the permissioned setting
[
        <xref ref-type="bibr" rid="ref3 ref4 ref5 ref6 ref7 ref8">3, 4, 5, 6, 7, 8</xref>
        ].
      </p>
      <sec id="sec-1-1">
        <title>1.1. Blockchain Structure</title>
        <p>A blockchain is a series of ordered blocks whose design lies in deploying a chain in which each block is
linked to the previous one. This linking operation is obtained using hash functions. The hash function
is used to make any block dependent on the content of the previous block so that everyone can publicly
verify that the current state of the blockchain was not tampered with. Each block contains data that
can be divided into transactions. Each transaction can contain a coin transfer from some users to other
users or other data that can be stored on the blockchain to make them publicly available and verifiable.
As said before, the hash is used to link the blocks, so a block  in the chain contains a value that
is the hash of the transactions of the previous block − 1 together with some additional values that
depend on the consensus mechanism. Even if it seems that the blockchain should be immutable, there
are scenarios in which it is mandatory to delete some data (e.g., in case of compliance with laws and
regulations). Therefore, a technique that allows the editing of the blockchain is highly desirable.</p>
      </sec>
      <sec id="sec-1-2">
        <title>1.2. Previous Solution</title>
        <p>
          Let us give a high-level description of the chameleon-hash-function-based solution of [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. Each member
of the blockchain consortium, or governance, has a share of a trapdoor of a chameleon hash function.
Whenever a block  must be modified, the consortium members agree on a new ′. Then, to replace 
with ′ without altering its hash value, the consortium computes a collision in the hash function with a
multi-party protocol executed from the consortium members’ trapdoor shares. The collision-resistance
property of the chameleon hash function and the honest majority of the members of the governance
ensure that when the trapdoor is kept private, the blockchain is consistent and resilient to any chain
tampering attempts.
        </p>
        <p>
          Since it is needed that the governance is known and fixed, this result is mainly suitable for
permissioned blockchains, even though, as the authors of [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] outline, their solution could potentially find
applications also to permissionless blockchains by distributing the trapdoor among the full nodes or a
chosen subset of participants. This is however problematic since the number of full nodes can drastically
change over time, and there is no obligation for the nodes with a share of the trapdoor to remain active
forever (losing the possibility of reconstructing the trapdoor).
        </p>
        <p>
          We observe that even though one limits the usage of the techniques in [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] exclusively to permissioned
blockchains, there is a major problem: the transactions originally in  and modified in ′ may be
somehow related to subsequent transactions. This issue was also highlighted in [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ], noting that
removing data from a blockchain transaction can afect multiple related transactions. This makes
deletion challenging without compromising the integrity of a part of the blockchain.
        </p>
        <p>The issue of compromising the integrity of the blockchain becomes more evident when considering
a smart-contract-enabled blockchain. Roughly, a smart contract is a piece of code that can be fed with
inputs coming from valid transactions. A smart contract is associated with a state, and each time an
input is given to the smart contract, the state changes. The current state of the smart contract can be
inferred from the blockchain.</p>
        <p>In the presence of a blockchain redaction it is possible that even if the chaining among blocks and
within transactions is consistent, the logic inferred from transactions stored in the blockchain may be
broken. This is evident when considering the state of the smart contract they refer to.
Simple solutions and their drawbacks. A direct approach to fix the problem of maintaining the
consistency of the state of a smart contract in the presence of redacted transactions, still remaining
within the techniques envisioned by Ateniese et al., consists of possibly redacting also subsequent
correlated transactions in such a way that the state of the blockchain remains consistent. We will now
discuss why such a repeated redaction process can be very harmful for those use cases that relied on
data available in smart contracts.</p>
        <p>Let us consider as a toy example a smart contract that keeps a counter initialized to 0. Suppose a
transaction 1 with the aim of increasing the counter is submitted. The state of the counter is now
increased to 1, assuming 1 gets accepted by the blockchain. If subsequent transactions 2, . . . , 
also get accepted, this would lead to a final state having  as the value of the counter. It is clear that
if 1 is removed from the blockchain, then any transaction that crucially relied on the value of the
counter being  would not be consistent anymore. Indeed, the remaining transactions add up to  − 1
and not . In turn, consistency can be enforced by also redacting those transactions that relied on the
value of the counter being , and this in turn might require further redactions severely damaging those
applications that relied on those data that would be removed.</p>
        <p>In light of the above discussion, we have the following natural open problem.</p>
        <p>Open Problem: Is there a redaction technique for updating a transaction in permissioned
smart-contractenabled blockchains without afecting other transactions and still maintaining the smart contract in a
consistent state?</p>
        <p>We obviously require that all redaction operations do not afect the public verifiability feature of the
blockchain in any way since otherwise, we would end up in the classical setting where clients have to
trust servers.</p>
      </sec>
      <sec id="sec-1-3">
        <title>1.3. Our Solution</title>
        <p>At a high level, a smart contract  consists of a set of functions 1, . . . , . Transactions point to the
address of a smart contract and contain an input for a smart contract function . Each function of 
takes as input the current state of the smart contract (that can be inferred by the blockchain content)
and the input contained inside the transaction that points to . Given these two values as inputs, 
produces a new state for . Note that, by following Ethereum Smart Contracts documentation1, we do
not allow smart contract functions to read transaction data inside the blockchain, hence we allow only
the smart contract states and the input.</p>
        <p>
          Inspired by the approach of [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ], we use the following technique to manage the redaction of a
transaction that changes the state of a smart contract. Let us suppose that a transaction  must be
redacted. Before modifying , the governance checks if there are smart contracts with states that
depend on the execution of  (this can be done eficiently by maintaining this information in some
ad-hoc data structure) and that would have inconsistent states in case  is redacted. Let  be a
transaction that was pointing to some smart contract function in . The governance will look for the
subsequent transactions of  depending on the state st (i.e., it will look for the transactions directly
afected by ). Let 1, . . . ,  be the set of transactions that have to be redacted. Let us assume
that 1, . . . ,  directly afect transactions ′1, . . . , ′. The governance will generate, for each
transaction ′,  ∈ [], which prior to the redaction was updating the state of a smart contract to a
specific value, a proof   showing that there were transactions  ,  ∈ [], such that the transaction
′ leads to that given value of the smart contract. After  1, . . . ,   are generated, the governance
can replace through the techniques of [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] the old transactions with the redacted ones. The proofs
        </p>
        <sec id="sec-1-3-1">
          <title>1https://ethereum.org/en/developers/docs/smart-contracts/</title>
          <p>are auxiliary redaction information that can be either added to the redacted blocks or made available
independently.</p>
          <p>Going back to our example of updating a counter, if the governance redacts transaction 1, then
the directly afected transaction is 2 (other transactions updating the counter and other transactions
using the next values of the counter are indirectly afected) since it was setting two as value of the
counter starting from the value one set by 1. In order to avoid an impact on other transactions, we
need that after executing 2, despite the redaction of 1 the value of the counter is still two, and this
should be publicly verifiable as a correct value. With our solution, before deleting 1, the governance
will prepare a proof  that certifies that 2 is consistent with the state of the smart contract having
two as value of the counter since there existed a transaction 1 setting already the value to one. We
call the type of proof described above as proof-of-consistency.</p>
          <p>Given this high-level overview of our technique relying on proofs-of-consistency, it is clear that, in
our redaction technique, the state of the blockchain before and after a redaction remains unchanged, and
state consistency can be publicly verified. We remark that our technique can be eficiently implemented
depending on the specific SNARK to be computed, and this can depend on several factors (e.g., the
format of transactions, the computations that they perform, and the complexity of the state of the smart
contract). We also remark that the technique is not applicable to all possible updates of transactions.
For instance, in the above case of the counter, the technique is applicable when 1 must be removed,
but it is not applicable when 1 must be changed to a transaction aiming at setting the value of the
counter to a value diferent than one (e.g., through two increments of the counter), since this would
conflict with the fact that after executing 2 the value must be two.</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>2. Related Work and Comparison</title>
      <p>
        Ateniese et al. [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] proposed a mechanism to update block contents in blockchains. Their solution is very
eficient and is mainly applicable to the permissioned setting. Their deletion approach can potentially
go unnoticed by users not actively participating in the redaction process. They rely on the concept
of chameleon hash functions, consisting of equipping hash functions with trapdoors facilitating the
discovery of many preimages for a given digest. In our approach, we depart from their mechanisms and
address the important issue of dealing with the consistency of the permissioned blockchains in which
smart contracts are deployed.
      </p>
      <p>Puddu et al. [11] proposed a protocol where users can define alternative versions, referred to as
“mutations”, for their transactions. These mutations can be activated later through an expensive secure
multi-party computation (MPC) protocol. Approval for a modification request is contingent upon a
voting procedure utilizing proofs of work. In their solution, only the transaction’s creator can allow its
modifications, thereby preventing the deletion of content inserted by malicious entities. Their solution is
thought to work in the permissionless setting, but this approach has the significant drawback of giving
the miners the power to forbid any form of modification to the mined blocks, efectively bypassing the
whole mutation mechanism.</p>
      <p>
        Deuber et al. [12] introduced a redactable blockchain protocol for the permissionless setting. In their
protocol, users can suggest modifications by inscribing proposals directly onto the blockchain. The
approval of redaction proposals is determined through a voting process that combines consensus and
computational power. This protocol requires an online voting procedure on the blockchain since they
operate on a permissionless blockchain and they want to modify the view of all nodes. The drawbacks
of online voting technique are discussed in [
        <xref ref-type="bibr" rid="ref10">13, 10</xref>
        ].
      </p>
      <p>Thyagarajan et al. [14] introduced Reparo, which is an enhancement of Deuber et al.’s solution
allowing to redact or modify blocks that are incorporated into the blockchain before the implementation
of the software update containing the redaction protocol. Similar to Deuber et al., Reparo is thought
to be used on permissionless blockchains and relies on resource-intensive and interactive consensus
protocols that necessitate several days for their execution.</p>
      <p>
        Grigoriev et al. [15] proposed a data redaction mechanism based on the RSA cryptosystem, with a
primary focus on permissioned blockchains. The idea is similar to the idea expressed by [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], and the
same issues of [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] about smart contracts (i.e., it is not clear how to modify the transactions subsequent
to a redacted transaction to keep the state consistent) applies also to their work.
      </p>
      <p>
        Botta et al. [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] designed and implemented a mechanism for securely deleting some data specifically
from the Bitcoin blockchain. Their technique relies on transparent non-interactive succinct arguments
of knowledge, allowing any node to locally delete some data from Bitcoin transactions, still preserving
the public verifiability of the blockchain. Their technique requires that a node that wants to delete
locally some data can do it directly creating a succinct proof that the modified block is the result of a
redaction of a prior block that had the same content except for some neutral data and that produced a
Merkle root that is consistent with the chaining of the blocks. The redaction technique proposed does
not require any coordination among nodes. They apply their technique only to those data of Bitcoin
(i.e., the free texts allowed by coinbase transaction and the one that can be added after an OP_RETURN
instruction) that are irrelevant for the state of the blockchain (i.e., the UTXOs). We will depart from their
technique and generalize it to preserve the consistency of the state of a smart contract in a permissioned
blockchain. A solution similar to [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] was proposed by Larraia et al. [16].
      </p>
      <p>
        Zhang et al. [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] proposed an enhanced version of [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] in which the redaction proposal can be made
only by authorized users that have a specific secret. This is obtained using decentralized attribute-based
encryption.
      </p>
      <p>
        Zhou et al. [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] presented a solution for permissioned blockchains, similarly to [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] they use a chameleon
hash function and allow two types of modifications: the transaction modification that can be performed
only by the owner of the transaction and the transaction deletion that can be done by a regulator in case
the transaction must be deleted. To achieve this, each transaction is hashed with a particular chameleon
hash function that depends on the identity of the user that performs the hash. The regulator possesses
a secret key that can be used to derive the secret keys of all other users for the hash function. Every
modification or deletion must be accepted by the consensus mechanism. Moreover, the regulator has
the power to modify all the transactions related to the modified or deleted transaction recovering the
secret key of the owner of the impacted transaction.
      </p>
      <p>
        Peng et al. [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] also proposed a system based on a voting procedure that is more eficient compared
to [12]. Indeed, the voting procedure is done using an aggregate signature among the parties in the
consortium on a block proposed by a user of-chain, publishing on-chain a way to verify the result of
the ballot.
      </p>
      <p>Wang et al. [17] proposed a diferent solution for permissioned blockchains based on verifiable delay
functions. In their approach, when a redaction proposal is sent to a supervisor, the supervisor quickly
constructs a chain fork to redact the proposed blocks. This fork is proposed to the leader node and the
accounting nodes. If the produced fork keeps consistency it is spread as the new blockchain. Even if
this solution can be eficient, it requires that the supervisor updates the entire blockchain.</p>
      <p>Dai et al. [18] proposed a solution that exploits both the vote solution and the chameleon hash
function, indeed their solution requires a vote to decide if a given block should be substituted, and once
it is decided, it is replaced with the help of the chameleon hash function to keep the consistency of the
links among the blocks.</p>
      <p>
        The limitations of [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] apply essentially to all above works since they do not address consistency of
states of smart contracts and the availability of legitimate transactions, once a prior and correlated
transaction has been redacted.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Preliminaries</title>
      <p>We will denote by [] the set {1, . . . , }.</p>
      <sec id="sec-3-1">
        <title>3.1. Succinct Non-Interactive Argument of Knowledge</title>
        <p>In this paper, we use the notion of succinct non-interactive argument of knowledge (SNARK). We defer
to [19, 20, 21, 22] for a more precise description. Let  be a binary relation computable in polynomial
time. We identify with the pair (, ) the elements in the relation, where we call  the statement and 
the witness. A SNARK for a relation  consists of two probabilistic polynomial-time (PPT) algorithms
Prove and Verify that both have access to a common reference string (CRS), and potentially to a random
oracle (RO) :
• Prove(, , ): this is a PPT algorithm that takes as input the , a statement , and a
witness  s.t. (, ) ∈ , and has oracle access to . It outputs a proof  .
• Verify(, ,  ): this is a deterministic polynomial-time algorithm that takes as input the ,
a statement , a proof  , and has oracle access to . It outputs 1 if the proof is accepted, and 0
otherwise.</p>
        <p>Prove is used by the prover and Verify by the verifier. Informally, these algorithms must satisfy the
following properties:
• Completeness: An honest prover convinces an honest verifier with overwhelming probability.
• Knowledge Soundness: If a malicious prover Prove* is able to prove a statement  with a given
probability , there exists a PPT extractor  such that if Prove* produces with non-negligible
probability an accepting proof  for a statement , then  with access to the prover outputs a
witness  for  with overwhelming probability.
• Zero knowledge: The proof computed by Prove does not reveal any additional information apart
the veracity of the claim.
• Succinctness: Verify runs in polynomial time in the size of the statement ; moreover, the proof
size and the running time of the verifier are sublinear in the size of the witness for .</p>
        <p>When in the above definition the CRS can not have a trapdoor afecting knowledge soundness and
zero knowledge, a SNARK is usually referred as STARK, where the letter “T” remarks the transparency
of the involved CRS.</p>
      </sec>
      <sec id="sec-3-2">
        <title>3.2. Chameleon Hash Functions</title>
        <p>
          Chameleon hash functions were first introduced in [ 23]. In this work, we report the definition from
[
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. At a very high level, a chameleon hash function is a cryptographic hash function that contains a
trapdoor. It is hard to find a collision except if the trapdoor is known, indeed knowing the trapdoor it is
possible to eficiently generate collisions.
        </p>
        <p>More precisely a chameleon hash function is a tuple of PPT algorithms  = (, ℎ,  , )
specified as follows.</p>
        <p>• (ℎ, ) ← (1 ): The probabilistic key generation algorithm  takes as input the
security parameter  ∈ N, and outputs a public hash key ℎ and a secret trapdoor key .
• (ℎ,  ) ← ℎ(ℎ, ): The probabilistic hashing algorithm ℎ takes as input the hash key
ℎ, a message  ∈  , and outputs a pair (ℎ,  ) that consists of the hash value ℎ and a check
string  .
•  =  (ℎ, , (ℎ,  )): The deterministic verification algorithm   takes as input a
message  ∈  , a candidate hash value ℎ, and a check string  , and returns a bit  that equals 1
if (ℎ,  ) is a valid hash/check pair for the message  (otherwise  equals 0).
•  ′ ← (, (ℎ, ,  ), ′): The probabilistic collision finding algorithm  takes as input
the trapdoor key , a valid tuple (ℎ, ,  ), and a new message ′ ∈  , and returns a new check
string  ′ such that  (ℎ, , (ℎ,  )) =  (ℎ, ′, (ℎ,  ′)) = 1. If (ℎ,  ) is not a valid
hash/check pair for message  then the algorithm returns ⊥.</p>
        <p>A chameleon hash function  = (, ℎ,  , ) with message space  satisfies
correctness if there exists a negligible function  for all  ∈  such that</p>
        <p>Pr [︁  (ℎ, , (ℎ,  )) = 1 : (ℎ,  ) ←
ℎ(ℎ, ); (ℎ, ) ←
(1 ) ]︁ ≥ 1 −  ( ).</p>
        <p>Ateniese et al. introduced a stronger definition of collision resistance stating that  is
collisionresistant if the following holds: no PPT algorithm , given the public hash key ℎ, can find two pairs
(,  ) and (′,  ′) that are valid under ℎ and such that  ̸= ′, with all but a negligible probability
and this must hold even when  can see an arbitrary number of collisions generated using the trapdoor
key  corresponding to ℎ.</p>
      </sec>
      <sec id="sec-3-3">
        <title>3.3. Permissioned Smart-Contract-Enabled Blockchains in a Nutshell</title>
        <p>To formalize blockchains we rely on the notation of [24]. A blockchain is a chain  of blocks, where
each block has the form  = (, , ). Intuitively,  is the set of transactions in ,  is the head
of the block and  is a value used to make the chaining of the hash consistent. A block  is valid
if a predicate validblock() = 1. The function validblock is arbitrarily chosen by the parties of the
consortium that maintains the blockchain.</p>
        <p>The last published block is called the head of the chain, denoted by (). A chain  with a head
() = (, , ) can be extended to ′ = ||′ by attaching a (valid) block ′ = (′, ′, ′);
the head of the new chain ′ is (′) = ′. The function () denotes the length of a chain
 (i.e., its number of blocks). For a chain  of length  and any  ≥ 0, we denote by ⌈ the chain
resulting from removing the  rightmost blocks of , and analogously we denote by ⌉ the chain
resulting in removing the  leftmost blocks of . If  is a prefix of ′ we write  ≺ ′.
3.3.1. Handling Smart Contracts
Since we are considering smart-contract-enabled blockchains, we provide our formalization of a smart
contract. Recall that each block  = (, , ), and  is the set of transactions contained in .
To account for smart contracts, we consider the following three types of transactions: (i) standard
transactions, (ii) smart contract transactions, and (iii) state transactions. A standard transaction  is a
tuple (addr, data, toaddr), where addr is the address of the transaction, data is either raw data
or smart contract’s inputs as we specify later, and toaddr is either the address of the recipient smart
contract or 0 when  contains raw data.</p>
        <p>A smart contract transaction contains a smart contract , that is composed of a tuple (addr, 1, . . . , ℓ).
We will sometimes refer to  as a vector, therefore [] corresponds to the -th element of the tuple.</p>
        <p>In , the value addr is the address of the smart contract, while 1, . . . , ℓ are functions.  further
initializes a state st0 containing the initial state of the internal variables of its functions (1, . . . , ℓ).
The state transaction contains the state st of some smart contract 2.</p>
        <p>When a standard transaction  = (addr, data, toaddr) is used as an input for  = (addr, 1, . . . , ℓ),
the field toaddr of  matches with the addr field of  and data will be a pair (, inp) where inp is
the input to the function  inside , with  ≤ ℓ.</p>
        <p>
          Let   (, ) be the function outputting the smart contract  triggered by  (i.e.  inside
 such that toaddr = [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]).   (, ) outputs ⊥ if such smart contract is not found. Further,
let (, ) be a function outputting the index of the last state of  inside . Given , when a
new transaction  with toaddr = addr and data = (, inp) is accepted, the function  inside 
will create a new state st with  = (, ) + 1. This new state will be inserted in some state
transaction to be published inside a new block of .
        </p>
        <p>Since we are indexing smart contracts independently from the smart contract transaction they belong
to, we assume the existence of a function  (, st) mapping a smart contract state to its own
state transaction together with the corresponding block, and a function  (, ) mapping a
smart contract to its own smart contract transaction together with the corresponding block.
2The information matching st to  can be the address addr of  inserted into the state st during its creation.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. The Redaction Technique of [2]</title>
      <p>
        The idea of [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] is to set the hash function used to chain the diferent blocks in the blockchain, to be a
chameleon hash function.
      </p>
      <p>
        We borrow the same idea of [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], and stress that the idea of using a hash function to chain blocks
in such a way that some form of consistency is ensured is used in most of the commonly known
blockchains. Then, a consensus mechanism is built on top of this hash-based chaining mechanism. A
validblock algorithm can be arbitrarily defined depending on the consensus mechanism used.
      </p>
      <p>
        In the solution of [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], only a set of trusted authorities can redact the blockchain. Here, we report the
case of a single trusted authority. However, in [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] it is shown how to generalize it to a decentralized
setting using a secure multi-party computation protocol.
      </p>
      <p>
        Ateniese et al. [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] extend the block definition of [ 24] as  = (, , , (ℎ,  )), where the new
component (ℎ,  ) is the hash/check pair for a chameleon hash. The hash function is defined to be a
chameleon hash (, ℎ,  , ), and the validation predicate for a block is the one used
for proof-of-work. Also, the extension of a blockchain is similar to the one described in Section 3.3.
Given a chain  with head () = (, , , (ℎ,  )), the extension is obtained attaching a (valid)
block ′ = (′, ′, ′, (ℎ′,  ′)) such that ′ = (, ℎ).
      </p>
      <p>Their algorithm used to redact the blockchain takes as input a set of block indices  and || transaction
sets {′}∈ that are going to replace the original transactions {}∈ . For each block , the algorithm
generates a new collision  ′ using the collision generation algorithm  on input the trapdoor, the
hash ℎ included in the -th block, , the old collision value   and the new set of transactions ′. Then,
it generates a new block ′ = (, ′, , (ℎ,  ′)) and outputs the modified chain ′ with the old
blocks  replaced with the new redacted blocks ′.</p>
      <p>
        The formal description of the redaction algorithm3 of [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] is reported in Algorithm 1.
Data: The chain  of length , a set of block indices  ⊆ [], a set of values {′}∈ , and the
chameleon hash trapdoor key .
      </p>
      <p>Result: The redacted blockchain ′
′ ← ;
Parse ′ as (1, . . . , );
for  ∈ [] do
if  ∈  then</p>
      <p>Parse the -th block of ′ as  = (, , , (ℎ,  ));
 ′ ← (, (ℎ, ||,  ), (||′));
′ = (, ′, , (ℎ,  ′));
′ ← ′⌈− +1||′||⌉′;
end
end</p>
      <sec id="sec-4-1">
        <title>Algorithm 1: Redaction algorithm from [2].</title>
        <p>The above approach is very eficient and can be easily put into practice. Unfortunately, when the
blockchain enables computation of smart contract functions, we observe the following issue.</p>
        <p>
          Let us assume that we have a smart contract  stored in some block, and that a transaction 
appearing in a block  changes the state of  from some st to st′. Let ˜ be a transaction inside
another block ′ changing the state of  from st′ to st′′. If the trusted authority redacts the block 
by modifying , then the resulting state might be diferent from st′ and in turn ˜ might be invalid of
anyway making updates that were not desired by the creator of that transaction, therefore leaving the
smart contract in a state that is inconsistent with the logic of the transactions that were proposed and
approved earlier, ending up to st′′.
3In [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ] the authors further propose a solution for shrinking a blockchain that we do not report here due to its similarity with
the above redaction algorithm.
        </p>
        <p>To guarantee blockchain consistency (without leaving invalid transactions or transactions doing
something undesired for their creators), the natural solution would require to detect all the correlated
transactions appearing after the modified transaction, and then either modify or remove such
transactions if invalid. As said in Section 1.2, such an approach might be extremely hard to implement and
moreover might lead to a huge number of delete transactions related to .</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Our Permissioned Smart-Contract-Enabled Blockchain Redaction</title>
      <p>updates the state of  from st+1 to st+2.</p>
      <p>As we said, our solution can be used to improve the current state of the art in the case of redaction on
permissioned smart-contract-enabled blockchains.</p>
      <p>From now on, we rely on a little abuse of notation to ensure good readability. We will use the original
definition of  (i.e.,  = (addr, data, toaddr)), where data might be (, inp), everywhere except
when we feed  as an input to a function. In such a case, we refer to the inp field of .</p>
      <p>Let us first consider a simplified version of the blockchain in which state transactions are not included
in blocks, but all the states can be inferred by looking at the smart-contract transactions coupled with
the standard transactions.</p>
      <p>Let us assume that, at time , we have a blockchain  = (1, . . . , ). Let us further assume that  =
{, , , (ℎ,  )}, for some  ∈ [ − 2] contains a smart contract . Let  = { ,  ,  , (ℎ,  )},
for some  &lt;  &lt;  be the block containing a transaction  that updates the state of  from st to
st+1, for some  ∈ [(, )]. Let ˜ be the transaction in a block ℓ, for some  &lt; ℓ ≤  that</p>
      <p>In case of the redaction of block  , if the transaction  is modified, it might afect the state st+1.
In turn, it will also afect the consistency of transaction ˜.</p>
      <p>As already mentioned, our solution relies on a proof that ˜ is consistent with st+1. This type of
proof ensures that all the states subsequent to st+1 are consistent w.r.t. a previous version of the
chain. We call this type of proof proof-of-consistency.</p>
      <sec id="sec-5-1">
        <title>5.1. Proof of Consistency for Smart Contract States</title>
        <p>Our proof-of-consistency can be implemented by relying on a SNARK for the Relation 1 described
below.</p>
        <p>The statement consists of the transaction ˜, two states st and st′′, two functions  and  ′ (of the
same smart contract ), the head  of the block  to be redacted, and the chameleon hash ℎ together
with its public hash key ℎ . The witness, instead, contains the original transaction set  (before
redaction) of the block , the redacted transaction  inside , and a state st′. The relation shows that
the function  , if triggered by the original transaction  and the state st contained in the statement,
produces a state st′. st′ is part of the witness since it cannot be computed anymore due to the fact that
the block containing  ∈  will be redacted. The relation further shows that the transaction ˜, if given
as an input to  ′ together with the non-recomputable state st′, will consistently produce st′′. Finally,
to guarantee consistency with the block that will be redacted, the relation shows that the original 
containing the transaction  that will be later modified produces the same hash ℎ that will appear later
in the redacted block, i.e., the relation shows that the transaction set , in the witness, together with 
and the hash key ℎ, if given as input to ℎ, produces a pair (ℎ, · ). During verification, the hash ℎ
to be placed in the statement will be taken from the redacted block. Relation 1 follows:
 =
{︃</p>
        <p>⃒  (, st) = st′∧
((˜, st, st′′, ,  ′, , ℎ, ℎ), (, , st′))⃒⃒⃒  ′(˜, st′) = st′′∧
⃒ (ℎ, · ) = ℎ(ℎ, (, ))
}︃
.</p>
        <p>(1)</p>
        <p>If we pose ourselves in the settings described at the beginning of the section, then st = st,
st′ = st+1, st′′ = st+2, and  = . If a state transaction st′ updating st through  is stored
inside the blockchain, we have two diferent cases depending on what the governance wishes to redact:
• If the governance wishes to redact both the state st′ and , the relation to be proven is the same
as above.
• If the governance wishes to redact  but st′ shall remain unchanged in the chain, the relation is
the same as above except that st′ is part of the statement, not the witness.</p>
        <p>In the following section, we present our extension of the redaction algorithm of Ateniese et al. with the
integration of our proof-of-consistency.</p>
      </sec>
      <sec id="sec-5-2">
        <title>5.2. Our New Redaction Algorithm</title>
        <p>The new redaction algorithm is run by the governance of the blockchain, knowing which blocks with
indexes in  ⊆ [] shall be redacted, together with the new sets of transactions ′ for each  ∈ . For
each block , parsed as (, , , (ℎ,  )), computes a new collision  ′ using the trapdoor , ℎ, ,
the old collision   and the new set of transaction ′ related to the -th block. Then, for each transaction
 in  to be modified with a diferent transaction ′ in ′ , the algorithm identifies the smart contract
 triggered by  and the state stℓ that is a state update from stℓ− 1 for some function  ∈ . Then,
ifnds for a transaction  in some subsequent block triggering a function  ′ ∈  updating stℓ to stℓ+1
and thus generates a proof-of-consistency showing that  updates stℓ− 1 to stℓ,  updates stℓ to
stℓ+1, and the original transaction set  containing  , if given as input to ℎ, lead to the value ℎ
contained in both the original and the redacted -th block. The redaction procedure is formally reported
in Algorithm 2.</p>
        <p>When dealing with redacted blockchains, we introduce four informal properties that we believe are
the most significant in our context.</p>
        <p>Chain Growth: Any chain (either redacted or not) can always be extended with a new (valid) block
issued to the network.</p>
        <p>Chain Consistency: Smart contract states must be consistent w.r.t. original data (i.e., existing data
before redaction).</p>
        <p>Privacy of Original Data: The auxiliary redaction information should not revel any significant
information about original data that can not be inferred directly looking at the redacted blockchain.
Minimal Impact Redaction: The redaction procedure only modifies/deletes the minimal amount of
information that is explicitly required to be redacted.</p>
        <p>We argue below why the above properties are satisfied by our redaction technique:
Chain Growth: Due to the chameleon property of the hash functions, the hash value of the blockchain
is never modified when transactions are redacted by the governance. Hence, any version of the
chain, either redacted or not, will have the same hash value. Hence, the underlying consensus
mechanism can be used as it is to extend any chain roaming around the network.</p>
        <p>Chain Consistency: Chain consistency is guaranteed by the consistency of states of the smart
contracts w.r.t their input transactions and the consistency between blockchain hash and data.
Regarding state consistency, when the chain is not redacted, nodes can re-run a smart contract
from the standard transactions that are triggering such a smart contract and check whether all
the intermediate states are consistent, and then check that the blockchain data matches the hash
stored in the chain.</p>
        <p>On the other hand, if the chain is redacted, nodes can verify that state consistency was guaranteed
in the chain containing the original transactions thanks to the completeness of the
proofs-ofconsistency published by the governance as auxiliary redaction information.</p>
        <p>Data: The chain  of length , a set of block indices  ⊆ [], a set of values {′}∈ , and the
chameleon hash trapdoor key .</p>
        <p>Result: The redacted blockchain ′ and auxiliary redaction information Π .
′ ← ;
Π ← {} ;
Parse ′ as (1, . . . , );
for  ∈  do</p>
        <p>Parse  as (, , , (ℎ,  ));
Parse  as (1, . . . , );
Parse ′ as (′1, . . . , ′);
 ′ ← (, (ℎ, ||,  ), (|′));
′ = (, ′, , (ℎ,  ′));
for  ∈ [] do
if  ̸= ′ then</p>
        <p>Let  =   (′,  );
if ∃ ∈  s.t. stℓ =  (stℓ− 1,  ) for some ℓ ∈ [(, )] then
for  ∈ { + 1, . . . , } do
if ∃ ∈  s.t.   (′, ) =  ∧ ∃ ′ ∈  s.t. stℓ+1 =  ′(stℓ, )
then</p>
        <p>Generate a proof  for Relation 1 on input
((, stℓ− 1, stℓ+1, ,  ′, , ℎ, ℎ), (,  , stℓ));
Π ← Π ∪ { };
break;
end
end
end
end
′ ←
end</p>
        <p>′⌈− +1||′||⌉′;
end</p>
        <p>Algorithm 2: Redaction algorithm for a permissioned smart-contract-enabled blockchain.</p>
        <p>The collision resistance property of the chameleon hash function and the knowledge soundness
of the proofs-of-consistency guarantee that an adversary can forge blockchain data without
knowing the trapdoor key (that is held by the trusted authority) only with negligible probability.
Privacy of Original Data: Thanks to the zero-knowledge property of SNARKs, the auxiliary redaction
information does not disclose any additional information about the original data that could not
already be inferred from the other still existing transactions.</p>
        <p>Minimal-Impact Redaction: Our technique only deletes the interested information fixing the directly
afected transactions, without causing changes to indirectly afected transactions within the
blockchain.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>6. Conclusions</title>
      <p>In this paper, we have shown that the immutability of permissioned smart-contract-enabled blockchains
can be bypassed. First, we showed how previous techniques are insuficient when applied to a stateful
function deployed in a smart contract. Then, we showed how to use SNARKs in several interesting cases
(e.g., when a redaction consists of removing a transaction) to perform the redaction of a transaction
while maintaining consistency of other correlated transactions.</p>
      <p>Further directions of great interest are: (i) extending the applicability of permissioned blockchain
redaction to cases that are not resolved by our work, (ii) extending our approach to permissionless
blockchains. Since this is a preliminary research paper, as a promising future research direction, we
aim to rigorously formalize the definitions introduced in Section 5.2 within the context of blockchain
redactions.</p>
      <p>Acknowledgements. We thank Vincenzo Iovino for the insightful discussions we had about redaction
techniques in blockchains. The first author received funding from the European Research Council
(ERC) under the European Union’s Horizon 2020 research and innovation program under project
PICOCRYPT (grant agreement No. 101001283), and from the Spanish Government under projects
PRODIGY (TED2021-132464B-I00) and ESPADA (PID2022-142290OB-I00). The last two projects are
co-funded by European Union EIE, and NextGenerationEU/PRTR funds. The second author received
funding from the European Research Council (ERC) under the European Union’s Horizon 2020 research
and innovation program under project PROCONTRA (grant agreement No. 885666) and by the project
PARTHENON (B53D23013000006), under the MUR National Recovery and Resilience Plan funded by
the European Union - NextGenerationEU. The third author received funding from project SERICS
(PE00000014) under the MUR National Recovery and Resilience Plan funded by the European Union
- NextGenerationEU. The last author is member of the Gruppo Nazionale Calcolo Scientifico-Istituto
Nazionale di Alta Matematica (GNCS-INdAM) and his research contribution on this work is financially
supported under the National Recovery and Resilience Plan (NRRP), Mission 4, Component 2, Investment
1.1, Call for tender No. 104 published on 2.2.2022 by the Italian Ministry of University and Research
(MUR), funded by the European Union – NextGenerationEU– Project Title “PARTHENON” – CUP
D53D23008610006 - Grant Assignment Decree No. 959 adopted on June 30, 2023 by the Italian Ministry
of Ministry of University and Research (MUR).
[11] I. Puddu, A. Dmitrienko, S. Capkun,  chain: How to Forget without Hard Forks, IACR ePrint
(2017) 106.
[12] D. Deuber, B. Magri, S. A. K. Thyagarajan, Redactable blockchain in the permissionless setting, in:</p>
      <p>S&amp;P 2019, IEEE, 2019, pp. 124–138.
[13] M. S. Dousti, A. Küpçü, Moderated Redactable Blockchains: A Definitional Framework with an
Eficient Construct, in: ESORICS International Workshops, volume 12484 of LNCS, Springer, 2020,
pp. 355–373.
[14] S. A. K. Thyagarajan, A. Bhat, B. Magri, D. Tschudi, A. Kate, Reparo: Publicly Verifiable Layer to</p>
      <p>Repair Blockchains, in: FC 2021, volume 12675 of LNCS, Springer, 2021, pp. 37–56.
[15] D. Grigoriev, V. Shpilrain, RSA and redactable blockchains, Int. J. Comput. Math. Comput. Syst.</p>
      <p>Theory 6 (2021) 1–6.
[16] E. Larraia, M. S. Kiraz, O. Vaughan, How to Redact the Bitcoin Backbone Protocol, in: IEEE</p>
      <p>International Conference on Blockchain and Cryptocurrency (ICBC), IEEE, 2024.
[17] W. Wang, J. Duan, L. Wang, X. Hu, H. Peng, Strongly synchronized redactable blockchain based
on verifiable delay functions, IEEE Internet of Things Journal 10 (2023) 16778–16792.
[18] W. Dai, J. Liu, Y. Zhou, K.-K. R. Choo, X. Xie, D. Zou, H. Jin, Prbfpt: A practical redactable
blockchain framework with a public trapdoor, IEEE Transactions on Information Forensics and
Security 19 (2024) 2425–2437.
[19] R. Gennaro, C. Gentry, B. Parno, M. Raykova, Quadratic Span Programs and Succinct NIZKs
without PCPs, in: EUROCRYPT 2013, volume 7881 of LNCS, Springer, 2013, pp. 626–645.
[20] G. Danezis, C. Fournet, J. Groth, M. Kohlweiss, Square span programs with applications to succinct</p>
      <p>NIZK arguments, in: ASIACRYPT 2014, volume 8873 of LNCS, Springer, 2014, pp. 532–550.
[21] J. Groth, On the size of pairing-based non-interactive arguments, in: EUROCRYPT 2016, volume
9666 of LNCS, Springer, 2016, pp. 305–326.
[22] A. Kothapalli, S. Setty, I. Tzialla, Nova: Recursive zero-knowledge arguments from folding schemes,
in: CRYPTO 2022, Springer, 2022, pp. 359–388.
[23] H. Krawczyk, T. Rabin, Chameleon signatures, in: NDSS 2000, The Internet Society, 2000.
[24] J. A. Garay, A. Kiayias, N. Leonardos, The bitcoin backbone protocol: Analysis and applications,
in: EUROCRYPT 2015, volume 9057 of LNCS, Springer, 2015, pp. 281–310.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>R.</given-names>
            <surname>Matzutt</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Hiller</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Henze</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. H.</given-names>
            <surname>Ziegeldorf</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Müllmann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Hohlfeld</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Wehrle</surname>
          </string-name>
          ,
          <string-name>
            <surname>A Quantitative</surname>
          </string-name>
          <article-title>Analysis of the Impact of Arbitrary Blockchain Content on Bitcoin</article-title>
          ,
          <source>in: FC</source>
          <year>2018</year>
          , volume
          <volume>10957</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2018</year>
          , pp.
          <fpage>420</fpage>
          -
          <lpage>438</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>G.</given-names>
            <surname>Ateniese</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Magri</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Venturi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. R.</given-names>
            <surname>Andrade</surname>
          </string-name>
          , Redactable Blockchain - or
          <article-title>- Rewriting History in Bitcoin and Friends</article-title>
          , in: EuroS&amp;P, IEEE,
          <year>2017</year>
          , pp.
          <fpage>111</fpage>
          -
          <lpage>126</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>J.</given-names>
            <surname>Ma</surname>
          </string-name>
          , S. Xu,
          <string-name>
            <given-names>J.</given-names>
            <surname>Ning</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Huang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R. H.</given-names>
            <surname>Deng</surname>
          </string-name>
          ,
          <article-title>Redactable blockchain in decentralized setting</article-title>
          ,
          <source>IEEE Transactions on Information Forensics and Security</source>
          <volume>17</volume>
          (
          <year>2022</year>
          )
          <fpage>1227</fpage>
          -
          <lpage>1242</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>G.</given-names>
            <surname>Zhou</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Ding</surname>
          </string-name>
          , H. Han,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Zhu,
          <article-title>Fine-grained redactable blockchain using trapdoor-hash</article-title>
          ,
          <source>IEEE Internet of Things Journal</source>
          <volume>10</volume>
          (
          <year>2023</year>
          )
          <fpage>21203</fpage>
          -
          <lpage>21216</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>D.</given-names>
            <surname>Zhang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Le</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Lei</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Xiang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Liao</surname>
          </string-name>
          ,
          <article-title>Secure redactable blockchain with dynamic support</article-title>
          ,
          <source>IEEE Transactions on Dependable and Secure Computing</source>
          (
          <year>2023</year>
          )
          <fpage>1</fpage>
          -
          <lpage>14</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>C.</given-names>
            <surname>Peng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Xu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Liao</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Tang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Tang</surname>
          </string-name>
          ,
          <article-title>Redactable blockchain in the permissioned setting</article-title>
          ,
          <source>in: Science of Cyber Security</source>
          , Springer,
          <year>2023</year>
          , pp.
          <fpage>460</fpage>
          -
          <lpage>477</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>X.</given-names>
            <surname>Wu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>X.</given-names>
            <surname>Du</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Q.</given-names>
            <surname>Yang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>W.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <article-title>Redactable consortium blockchain based on verifiable distributed chameleon hash functions</article-title>
          ,
          <source>Journal of Parallel and Distributed Computing</source>
          <volume>183</volume>
          (
          <year>2024</year>
          )
          <fpage>104777</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Dong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Li</surname>
          </string-name>
          , Y. Cheng, D. Yu,
          <article-title>Redactable consortium blockchain with access control: Leveraging chameleon hash and multi-authority attribute-based encryption, High-Confidence Computing 4 (</article-title>
          <year>2024</year>
          )
          <fpage>100168</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>I. Visconti</surname>
          </string-name>
          ,
          <article-title>The right to be zero-knowledge forgotten</article-title>
          ,
          <source>in: Proceedings of the 2024 International Conference on Availability, Reliability and Security (ARES)</source>
          , ACM,
          <year>2024</year>
          . doi:
          <volume>10</volume>
          .1145/3664476. 3669973.
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>V.</given-names>
            <surname>Botta</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Iovino</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Visconti</surname>
          </string-name>
          ,
          <article-title>Towards data redaction in bitcoin</article-title>
          ,
          <source>IEEE Trans. Netw. Serv. Manag</source>
          .
          <volume>19</volume>
          (
          <year>2022</year>
          )
          <fpage>3872</fpage>
          -
          <lpage>3883</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>