@@ -96,26 +96,25 @@ func NewInscriptionToolWithBtcApiClient(net *chaincfg.Params, btcApiClient btcap
9696 },
9797 commitTxPrevOutputFetcher : txscript .NewMultiPrevOutFetcher (nil ),
9898 commitTxPrivateKeyList : request .CommitTxPrivateKeyList ,
99- txCtxDataList : make ([]* inscriptionTxCtxData , len (request .DataList )),
10099 revealTxPrevOutputFetcher : txscript .NewMultiPrevOutFetcher (nil ),
101100 }
102101 return tool , tool ._initTool (net , request )
103102}
104103
105104func (tool * InscriptionTool ) _initTool (net * chaincfg.Params , request * InscriptionRequest ) error {
106- destinations := make ([]string , len (request .DataList ))
107105 revealOutValue := defaultRevealOutValue
108106 if request .RevealOutValue > 0 {
109107 revealOutValue = request .RevealOutValue
110108 }
109+ tool .txCtxDataList = make ([]* inscriptionTxCtxData , len (request .DataList ))
110+ destinations := make ([]string , len (request .DataList ))
111111 for i := 0 ; i < len (request .DataList ); i ++ {
112- txCtxData , err := createInscriptionTxCtxData (net , request , i )
112+ txCtxData , err := createInscriptionTxCtxData (net , request . DataList [ i ] )
113113 if err != nil {
114114 return err
115115 }
116116 tool .txCtxDataList [i ] = txCtxData
117117 destinations [i ] = request .DataList [i ].Destination
118-
119118 }
120119 totalRevealPrevOutput , err := tool .buildEmptyRevealTx (request .SingleRevealTxOnly , destinations , revealOutValue , request .FeeRate )
121120 if err != nil {
@@ -136,7 +135,7 @@ func (tool *InscriptionTool) _initTool(net *chaincfg.Params, request *Inscriptio
136135 return err
137136}
138137
139- func createInscriptionTxCtxData (net * chaincfg.Params , inscriptionRequest * InscriptionRequest , indexOfRequestDataList int ) (* inscriptionTxCtxData , error ) {
138+ func createInscriptionTxCtxData (net * chaincfg.Params , data InscriptionData ) (* inscriptionTxCtxData , error ) {
140139 privateKey , err := btcec .NewPrivateKey ()
141140 if err != nil {
142141 return nil , err
@@ -152,17 +151,17 @@ func createInscriptionTxCtxData(net *chaincfg.Params, inscriptionRequest *Inscri
152151 // Therefore, we use two OP_DATA_1 to maintain consistency with ord.
153152 AddOp (txscript .OP_DATA_1 ).
154153 AddOp (txscript .OP_DATA_1 ).
155- AddData ([]byte (inscriptionRequest . DataList [ indexOfRequestDataList ] .ContentType )).
154+ AddData ([]byte (data .ContentType )).
156155 AddOp (txscript .OP_0 )
157156 maxChunkSize := 520
158- bodySize := len (inscriptionRequest . DataList [ indexOfRequestDataList ] .Body )
157+ bodySize := len (data .Body )
159158 for i := 0 ; i < bodySize ; i += maxChunkSize {
160159 end := i + maxChunkSize
161160 if end > bodySize {
162161 end = bodySize
163162 }
164163 // to skip txscript.MaxScriptSize 10000
165- inscriptionBuilder .AddFullData (inscriptionRequest . DataList [ indexOfRequestDataList ] .Body [i :end ])
164+ inscriptionBuilder .AddFullData (data .Body [i :end ])
166165 }
167166 inscriptionScript , err := inscriptionBuilder .Script ()
168167 if err != nil {
@@ -171,9 +170,10 @@ func createInscriptionTxCtxData(net *chaincfg.Params, inscriptionRequest *Inscri
171170 // to skip txscript.MaxScriptSize 10000
172171 inscriptionScript = append (inscriptionScript , txscript .OP_ENDIF )
173172
173+ leafNode := txscript .NewBaseTapLeaf (inscriptionScript )
174174 proof := & txscript.TapscriptProof {
175- TapLeaf : txscript . NewBaseTapLeaf ( schnorr . SerializePubKey ( privateKey . PubKey ())) ,
176- RootNode : txscript . NewBaseTapLeaf ( inscriptionScript ) ,
175+ TapLeaf : leafNode ,
176+ RootNode : leafNode ,
177177 }
178178
179179 controlBlock := proof .ToControlBlock (privateKey .PubKey ())
0 commit comments