// sellerKey: PublicKey) locks valueAmount of valueAsset {
// clause partialTrade(exchangeAmount: Amount) {
// define actualAmount: Integer = exchangeAmount * ratioDenominator / ratioNumerator
-// verify actualAmount > 0 && actualAmount < valueAmount
+// verify actualAmount >= 0 && actualAmount < valueAmount
// define receiveAmount: Integer = exchangeAmount * 999 / 1000
// lock receiveAmount of requestedAsset with sellerProgram
// lock valueAmount-actualAmount of valueAsset with standardProgram
// clause fullTrade() {
// define requestedAmount: Integer = valueAmount * ratioNumerator / ratioDenominator
// define requestedAmount: Integer = requestedAmount * 999 / 1000
-// verify requestedAmount > 0
+// verify requestedAmount >= 0
// lock requestedAmount of requestedAsset with sellerProgram
// unlock valueAmount of valueAsset
// }
// AMOUNT [... exchangeAmount sellerKey standardProgram sellerProgram requestedAsset actualAmount valueAmount]
// OVER [... exchangeAmount sellerKey standardProgram sellerProgram requestedAsset actualAmount valueAmount actualAmount]
// 0 [... exchangeAmount sellerKey standardProgram sellerProgram requestedAsset actualAmount valueAmount actualAmount 0]
-// GREATERTHAN [... exchangeAmount sellerKey standardProgram sellerProgram requestedAsset actualAmount valueAmount (actualAmount > 0)]
+// GREATERTHANOREQUAL [... exchangeAmount sellerKey standardProgram sellerProgram requestedAsset actualAmount valueAmount (actualAmount > 0)]
// 2 [... exchangeAmount sellerKey standardProgram sellerProgram requestedAsset actualAmount valueAmount (actualAmount > 0) 2]
// PICK [... exchangeAmount sellerKey standardProgram sellerProgram requestedAsset actualAmount valueAmount (actualAmount > 0) actualAmount]
// 2 [... exchangeAmount sellerKey standardProgram sellerProgram requestedAsset actualAmount valueAmount (actualAmount > 0) actualAmount 2]
// MULFRACTION [... sellerKey standardProgram sellerProgram requestedAsset requestedAmount]
// DUP [... sellerKey standardProgram sellerProgram requestedAsset requestedAmount requestedAmount]
// 0 [... sellerKey standardProgram sellerProgram requestedAsset requestedAmount requestedAmount 0]
-// GREATERTHAN [... sellerKey standardProgram sellerProgram requestedAsset requestedAmount (requestedAmount > 0)]
+// GREATERTHANOREQUAL [... sellerKey standardProgram sellerProgram requestedAsset requestedAmount (requestedAmount > 0)]
// VERIFY [... sellerKey standardProgram sellerProgram requestedAsset requestedAmount]
// FROMALTSTACK [... sellerKey standardProgram sellerProgram requestedAsset requestedAmount <position>]
// SWAP [... sellerKey standardProgram sellerProgram requestedAsset <position> requestedAmount]
builder.AddOp(vm.OP_AMOUNT)
builder.AddOp(vm.OP_OVER)
builder.AddOp(vm.OP_0)
- builder.AddOp(vm.OP_GREATERTHAN)
+ builder.AddOp(vm.OP_GREATERTHANOREQUAL)
builder.AddOp(vm.OP_2)
builder.AddOp(vm.OP_PICK)
builder.AddOp(vm.OP_ROT)
builder.AddOp(vm.OP_MULFRACTION)
builder.AddOp(vm.OP_DUP)
builder.AddOp(vm.OP_0)
- builder.AddOp(vm.OP_GREATERTHAN)
+ builder.AddOp(vm.OP_GREATERTHANOREQUAL)
builder.AddOp(vm.OP_VERIFY)
builder.AddOp(vm.OP_FROMALTSTACK)
builder.AddOp(vm.OP_SWAP)