## 3 Proposed Method
### Framework Design  
The framework of the BTPP method is illustrated in Figure 1 and involves the following roles:  
* Transaction Sender ([PERSON]): [PERSON] is responsible for constructing the output notes, generating Pedersen commitments and Bulletproofs range proofs for the relevant amounts, proving ownership of input notes, and transferring ownership of the output notes to the recipient. * Transaction Recipient ([PERSON]): [PERSON] is responsible for generating Pedersen commitments and Bulletproofs range proofs for the relevant amounts, verifying the correctness and ownership of the payment note received, and receiving payment notes representing the income. * Smart Contract: In the BTPP method, the smart contract acts as the executor of the transaction and is responsible for carrying out the necessary verification and transaction logic to ensure fair transactions between the parties. * Blockchain: The blockchain, maintained by relevant nodes, is responsible for maintaining the world state of the notes, verifying the validity of transactions, achieving consensus, and providing a secure execution environment for smart contracts. Figure 1: Framework of the BTPP method. The BTPP method comprises a set of polynomial-time algorithms, including _GSetup_, _UserKeyGen_, _NoteSRCH_, _Random_, _NoteCreate_, _Commit_, _Open_, _RangeProve_, _RangeVerify_, _OVerify_, _NfVerify_, and _TVerify_. These algorithms are formally defined as follows:  
1. \(\text{pp}\gets\text{{GSetup}}\big{(}1^{\lambda}\big{)}\) : Public parameter generation: Given the security parameter \(\lambda\) as input, the algorithm outputs the public parameters pp. 2. \((pk_{u},sk_{u})\leftarrow\text{{UserKeyGen}}(pp,pk_{\alpha},ID_{u})\) : User key pair generation: Given the public parameters \(pp\), the main key \(pk_{\alpha}\) of the CA, and the user identifier \(ID_{u}\) as input, the algorithm outputs the user's asymmetric key pair \((pk_{u},sk_{u})\);
3. \(note_{\text{in}}\leftarrow\text{{NoteSRCH}}(v,note_{u})\) : Search for eligible input notes: Given the user's list of notes and the transaction amount \(v\) as input, the algorithm searches for notes that exactly match the value \(v\). If there is a note with a value equal to \(v\), it is outputted. Otherwise, if there are multiple notes whose combined value is greater than or equal to \(v\), they are outputted. 4. \(r\leftarrow\text{{Random}}(seed)\) : Random number generation: The _Random_ function takes a random seed as input and generates a random number \(r\). The random number \(r\) is generated differently for different random seeds. The _Random_ function is primarily used when calculating stealth addresses to generate consistent temporary public-private key pairs based on shared knowledge between the transaction parties. 5. \(note_{\text{out}}\leftarrow\text{{NoteCreate}}(v,r,S,B)\) : Construction of transaction output note. The input includes the note value \(v\), the transaction temporary private key \(r\), the recipient's scan public key \(S\), and the spend public key \(B\). The output is the transaction's corresponding output note \(note_{\text{out}}\). 6. \(C\leftarrow\text{{Commit}}(x,r)\) : Pedersen commitment generation. The input consists of the target value \(x\) to be bound and hidden in the commitment and the random blinding factor \(r\). The output is the commitment \(C\) that binds \(x\) while revealing no information about \(x\). 7. \(1/0\leftarrow\text{{Open}}(C,x,r)\) : Validity verification of Pedersen commitment. The input consists of the commitment \(C\) that binds the target value \(x\), the target value \(x\) that is bound and hidden in the commitment, and the blinding factor \(r\). The output indicates whether the commitment \(C\) is indeed bound to the claimed value \(x\). 8. \(\pi\leftarrow\text{{RangeProve}}(x,r,C)\) : Generation of range proof based on Bulletproofs. The input consists of the value \(x\), the Pedersen commitment \(C\) to \(x\), and the blinding factor \(r\) used for verifying whether a hidden integer in a Pedersen commitment is equal to a given value.