Golang implemented sidechain for Bytom
Revision | 8a3d77e145317938ad4ad356e319fb3617f05fd7 (tree) |
---|---|
Time | 2019-10-16 10:41:11 |
Author | oysheng <33340252+oysheng@user...> |
Commiter | Paladz |
modify parameter name (#411)
@@ -141,7 +141,7 @@ func DecodeP2WMCProgram(prog []byte) (*vmutil.MagneticContractArgs, error) { | ||
141 | 141 | copy(requestedAsset[:], insts[1].Data) |
142 | 142 | magneticContractArgs.RequestedAsset = bc.NewAssetID(requestedAsset) |
143 | 143 | |
144 | - if magneticContractArgs.RatioMolecule, err = vm.AsInt64(insts[2].Data); err != nil { | |
144 | + if magneticContractArgs.RatioNumerator, err = vm.AsInt64(insts[2].Data); err != nil { | |
145 | 145 | return nil, err |
146 | 146 | } |
147 | 147 |
@@ -880,7 +880,7 @@ func TestValidateTxVersion(t *testing.T) { | ||
880 | 880 | func TestMagneticContractTx(t *testing.T) { |
881 | 881 | buyerArgs := vmutil.MagneticContractArgs{ |
882 | 882 | RequestedAsset: bc.AssetID{V0: 1}, |
883 | - RatioMolecule: 1, | |
883 | + RatioNumerator: 1, | |
884 | 884 | RatioDenominator: 2, |
885 | 885 | SellerProgram: []byte{0x51}, |
886 | 886 | SellerKey: testutil.MustDecodeHexString("960ecabafb88ba460a40912841afecebf0e84884178611ac97210e327c0d1173"), |
@@ -888,7 +888,7 @@ func TestMagneticContractTx(t *testing.T) { | ||
888 | 888 | |
889 | 889 | sellerArgs := vmutil.MagneticContractArgs{ |
890 | 890 | RequestedAsset: bc.AssetID{V0: 2}, |
891 | - RatioMolecule: 2, | |
891 | + RatioNumerator: 2, | |
892 | 892 | RatioDenominator: 1, |
893 | 893 | SellerProgram: []byte{0x52}, |
894 | 894 | SellerKey: testutil.MustDecodeHexString("ad79ec6bd3a6d6dbe4d0ee902afc99a12b9702fb63edce5f651db3081d868b75"), |
@@ -1083,7 +1083,7 @@ func TestMagneticContractTx(t *testing.T) { | ||
1083 | 1083 | func TestRingMagneticContractTx(t *testing.T) { |
1084 | 1084 | aliceArgs := vmutil.MagneticContractArgs{ |
1085 | 1085 | RequestedAsset: bc.AssetID{V0: 1}, |
1086 | - RatioMolecule: 2, | |
1086 | + RatioNumerator: 2, | |
1087 | 1087 | RatioDenominator: 1, |
1088 | 1088 | SellerProgram: []byte{0x51}, |
1089 | 1089 | SellerKey: testutil.MustDecodeHexString("960ecabafb88ba460a40912841afecebf0e84884178611ac97210e327c0d1173"), |
@@ -1091,7 +1091,7 @@ func TestRingMagneticContractTx(t *testing.T) { | ||
1091 | 1091 | |
1092 | 1092 | bobArgs := vmutil.MagneticContractArgs{ |
1093 | 1093 | RequestedAsset: bc.AssetID{V0: 2}, |
1094 | - RatioMolecule: 2, | |
1094 | + RatioNumerator: 2, | |
1095 | 1095 | RatioDenominator: 1, |
1096 | 1096 | SellerProgram: []byte{0x52}, |
1097 | 1097 | SellerKey: testutil.MustDecodeHexString("ad79ec6bd3a6d6dbe4d0ee902afc99a12b9702fb63edce5f651db3081d868b75"), |
@@ -1099,7 +1099,7 @@ func TestRingMagneticContractTx(t *testing.T) { | ||
1099 | 1099 | |
1100 | 1100 | jackArgs := vmutil.MagneticContractArgs{ |
1101 | 1101 | RequestedAsset: bc.AssetID{V0: 3}, |
1102 | - RatioMolecule: 1, | |
1102 | + RatioNumerator: 1, | |
1103 | 1103 | RatioDenominator: 4, |
1104 | 1104 | SellerProgram: []byte{0x53}, |
1105 | 1105 | SellerKey: testutil.MustDecodeHexString("9c19a91988c62046c2767bd7e9999b0c142891b9ebf467bfa59210b435cb0de7"), |
@@ -16,7 +16,7 @@ var ( | ||
16 | 16 | // MagneticContractArgs is a struct for magnetic contract arguments |
17 | 17 | type MagneticContractArgs struct { |
18 | 18 | RequestedAsset bc.AssetID |
19 | - RatioMolecule int64 | |
19 | + RatioNumerator int64 | |
20 | 20 | RatioDenominator int64 |
21 | 21 | SellerProgram []byte |
22 | 22 | SellerKey []byte |
@@ -149,7 +149,7 @@ func P2WMCProgram(magneticContractArgs MagneticContractArgs) ([]byte, error) { | ||
149 | 149 | builder := NewBuilder() |
150 | 150 | builder.AddInt64(0) |
151 | 151 | builder.AddData(magneticContractArgs.RequestedAsset.Bytes()) |
152 | - builder.AddInt64(magneticContractArgs.RatioMolecule) | |
152 | + builder.AddInt64(magneticContractArgs.RatioNumerator) | |
153 | 153 | builder.AddInt64(magneticContractArgs.RatioDenominator) |
154 | 154 | builder.AddData(magneticContractArgs.SellerProgram) |
155 | 155 | builder.AddData(magneticContractArgs.SellerKey) |
@@ -160,20 +160,20 @@ func P2WMCProgram(magneticContractArgs MagneticContractArgs) ([]byte, error) { | ||
160 | 160 | // |
161 | 161 | // MagneticContract source code: |
162 | 162 | // contract MagneticContract(requestedAsset: Asset, |
163 | -// ratioMolecule: Integer, | |
163 | +// ratioNumerator: Integer, | |
164 | 164 | // ratioDenominator: Integer, |
165 | 165 | // sellerProgram: Program, |
166 | 166 | // standardProgram: Program, |
167 | 167 | // sellerKey: PublicKey) locks valueAmount of valueAsset { |
168 | 168 | // clause partialTrade(exchangeAmount: Amount) { |
169 | -// define actualAmount: Integer = exchangeAmount * ratioDenominator / ratioMolecule | |
169 | +// define actualAmount: Integer = exchangeAmount * ratioDenominator / ratioNumerator | |
170 | 170 | // verify actualAmount > 0 && actualAmount < valueAmount |
171 | 171 | // lock exchangeAmount of requestedAsset with sellerProgram |
172 | 172 | // lock valueAmount-actualAmount of valueAsset with standardProgram |
173 | 173 | // unlock actualAmount of valueAsset |
174 | 174 | // } |
175 | 175 | // clause fullTrade() { |
176 | -// define requestedAmount: Integer = valueAmount * ratioMolecule / ratioDenominator | |
176 | +// define requestedAmount: Integer = valueAmount * ratioNumerator / ratioDenominator | |
177 | 177 | // verify requestedAmount > 0 |
178 | 178 | // lock requestedAmount of requestedAsset with sellerProgram |
179 | 179 | // unlock valueAmount of valueAsset |
@@ -185,24 +185,24 @@ func P2WMCProgram(magneticContractArgs MagneticContractArgs) ([]byte, error) { | ||
185 | 185 | // } |
186 | 186 | // |
187 | 187 | // contract stack flow: |
188 | -// 7 [... <position> <clause selector> sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset 7] | |
189 | -// ROLL [... <clause selector> sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset <position>] | |
190 | -// TOALTSTACK [... <clause selector> sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset] | |
191 | -// 6 [... <clause selector> sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset 6] | |
192 | -// ROLL [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset <clause selector>] | |
193 | -// DUP [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset <clause selector> <clause selector>] | |
194 | -// 2 [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset <clause selector> <clause selector> 2] | |
195 | -// NUMEQUAL [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset <clause selector> (<clause selector> == 2)] | |
196 | -// JUMPIF:$cancel [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset <clause selector>] | |
197 | -// JUMPIF:$fullTrade [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset] | |
198 | -// $partialTrade [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset] | |
199 | -// 6 [... exchangeAmount sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset 6] | |
200 | -// PICK [... exchangeAmount sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset exchangeAmount] | |
201 | -// 3 [... exchangeAmount sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset exchangeAmount 3] | |
202 | -// ROLL [... exchangeAmount sellerKey standardProgram sellerProgram ratioMolecule requestedAsset exchangeAmount ratioDenominator] | |
203 | -// MUL [... exchangeAmount sellerKey standardProgram sellerProgram ratioMolecule requestedAsset (exchangeAmount * ratioDenominator)] | |
204 | -// 2 [... exchangeAmount sellerKey standardProgram sellerProgram ratioMolecule requestedAsset (exchangeAmount * ratioDenominator) 2] | |
205 | -// ROLL [... exchangeAmount sellerKey standardProgram sellerProgram requestedAsset (exchangeAmount * ratioDenominator) ratioMolecule] | |
188 | +// 7 [... <position> <clause selector> sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset 7] | |
189 | +// ROLL [... <clause selector> sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset <position>] | |
190 | +// TOALTSTACK [... <clause selector> sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset] | |
191 | +// 6 [... <clause selector> sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset 6] | |
192 | +// ROLL [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset <clause selector>] | |
193 | +// DUP [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset <clause selector> <clause selector>] | |
194 | +// 2 [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset <clause selector> <clause selector> 2] | |
195 | +// NUMEQUAL [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset <clause selector> (<clause selector> == 2)] | |
196 | +// JUMPIF:$cancel [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset <clause selector>] | |
197 | +// JUMPIF:$fullTrade [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset] | |
198 | +// $partialTrade [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset] | |
199 | +// 6 [... exchangeAmount sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset 6] | |
200 | +// PICK [... exchangeAmount sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset exchangeAmount] | |
201 | +// 3 [... exchangeAmount sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset exchangeAmount 3] | |
202 | +// ROLL [... exchangeAmount sellerKey standardProgram sellerProgram ratioNumerator requestedAsset exchangeAmount ratioDenominator] | |
203 | +// MUL [... exchangeAmount sellerKey standardProgram sellerProgram ratioNumerator requestedAsset (exchangeAmount * ratioDenominator)] | |
204 | +// 2 [... exchangeAmount sellerKey standardProgram sellerProgram ratioNumerator requestedAsset (exchangeAmount * ratioDenominator) 2] | |
205 | +// ROLL [... exchangeAmount sellerKey standardProgram sellerProgram requestedAsset (exchangeAmount * ratioDenominator) ratioNumerator] | |
206 | 206 | // DIV [... exchangeAmount sellerKey standardProgram sellerProgram requestedAsset actualAmount] |
207 | 207 | // AMOUNT [... exchangeAmount sellerKey standardProgram sellerProgram requestedAsset actualAmount valueAmount] |
208 | 208 | // OVER [... exchangeAmount sellerKey standardProgram sellerProgram requestedAsset actualAmount valueAmount actualAmount] |
@@ -239,14 +239,14 @@ func P2WMCProgram(magneticContractArgs MagneticContractArgs) ([]byte, error) { | ||
239 | 239 | // 4 [... sellerKey standardProgram (<position> + 1) (valueAmount - actualAmount) valueAsset 1 4] |
240 | 240 | // ROLL [... sellerKey (<position> + 1) (valueAmount - actualAmount) valueAsset 1 standardProgram] |
241 | 241 | // CHECKOUTPUT [... sellerKey checkOutput((valueAmount - actualAmount), valueAsset, standardProgram)] |
242 | -// JUMP:$_end [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset] | |
243 | -// $fullTrade [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset] | |
244 | -// AMOUNT [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset valueAmount] | |
245 | -// 2 [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset valueAmount 2] | |
246 | -// ROLL [... sellerKey standardProgram sellerProgram ratioDenominator requestedAsset valueAmount ratioMolecule] | |
247 | -// MUL [... sellerKey standardProgram sellerProgram ratioDenominator requestedAsset (valueAmount * ratioMolecule)] | |
248 | -// 2 [... sellerKey standardProgram sellerProgram ratioDenominator requestedAsset (valueAmount * ratioMolecule) 2] | |
249 | -// ROLL [... sellerKey standardProgram sellerProgram requestedAsset (valueAmount * ratioMolecule) ratioDenominator] | |
242 | +// JUMP:$_end [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset] | |
243 | +// $fullTrade [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset] | |
244 | +// AMOUNT [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset valueAmount] | |
245 | +// 2 [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset valueAmount 2] | |
246 | +// ROLL [... sellerKey standardProgram sellerProgram ratioDenominator requestedAsset valueAmount ratioNumerator] | |
247 | +// MUL [... sellerKey standardProgram sellerProgram ratioDenominator requestedAsset (valueAmount * ratioNumerator)] | |
248 | +// 2 [... sellerKey standardProgram sellerProgram ratioDenominator requestedAsset (valueAmount * ratioNumerator) 2] | |
249 | +// ROLL [... sellerKey standardProgram sellerProgram requestedAsset (valueAmount * ratioNumerator) ratioDenominator] | |
250 | 250 | // DIV [... sellerKey standardProgram sellerProgram requestedAsset requestedAmount] |
251 | 251 | // DUP [... sellerKey standardProgram sellerProgram requestedAsset requestedAmount requestedAmount] |
252 | 252 | // 0 [... sellerKey standardProgram sellerProgram requestedAsset requestedAmount requestedAmount 0] |
@@ -260,15 +260,15 @@ func P2WMCProgram(magneticContractArgs MagneticContractArgs) ([]byte, error) { | ||
260 | 260 | // 4 [... sellerKey standardProgram sellerProgram <position> requestedAmount requestedAsset 1 4] |
261 | 261 | // ROLL [... sellerKey standardProgram <position> requestedAmount requestedAsset 1 sellerProgram] |
262 | 262 | // CHECKOUTPUT [... sellerKey standardProgram checkOutput(requestedAmount, requestedAsset, sellerProgram)] |
263 | -// JUMP:$_end [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset] | |
264 | -// $cancel [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset <clause selector>] | |
265 | -// DROP [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset] | |
266 | -// 6 [... sellerSig sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset 6] | |
267 | -// ROLL [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset sellerSig] | |
268 | -// 6 [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset sellerSig 6] | |
269 | -// ROLL [... standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset sellerSig sellerKey] | |
270 | -// TXSIGHASH SWAP CHECKSIG [... standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset checkTxSig(sellerKey, sellerSig)] | |
271 | -// $_end [... sellerKey standardProgram sellerProgram ratioDenominator ratioMolecule requestedAsset] | |
263 | +// JUMP:$_end [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset] | |
264 | +// $cancel [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset <clause selector>] | |
265 | +// DROP [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset] | |
266 | +// 6 [... sellerSig sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset 6] | |
267 | +// ROLL [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset sellerSig] | |
268 | +// 6 [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset sellerSig 6] | |
269 | +// ROLL [... standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset sellerSig sellerKey] | |
270 | +// TXSIGHASH SWAP CHECKSIG [... standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset checkTxSig(sellerKey, sellerSig)] | |
271 | +// $_end [... sellerKey standardProgram sellerProgram ratioDenominator ratioNumerator requestedAsset] | |
272 | 272 | func P2MCProgram(magneticContractArgs MagneticContractArgs) ([]byte, error) { |
273 | 273 | standardProgram, err := P2WMCProgram(magneticContractArgs) |
274 | 274 | if err != nil { |
@@ -281,7 +281,7 @@ func P2MCProgram(magneticContractArgs MagneticContractArgs) ([]byte, error) { | ||
281 | 281 | builder.AddData(standardProgram) |
282 | 282 | builder.AddData(magneticContractArgs.SellerProgram) |
283 | 283 | builder.AddInt64(magneticContractArgs.RatioDenominator) |
284 | - builder.AddInt64(magneticContractArgs.RatioMolecule) | |
284 | + builder.AddInt64(magneticContractArgs.RatioNumerator) | |
285 | 285 | builder.AddData(magneticContractArgs.RequestedAsset.Bytes()) |
286 | 286 | |
287 | 287 | // contract instructions |