return nil
}
+// CalcRequestAmount is from amount * numerator / ratioDenominator
func CalcRequestAmount(fromAmount uint64, contractArg *vmutil.MagneticContractArgs) uint64 {
res := big.NewInt(0).SetUint64(fromAmount)
res.Mul(res, big.NewInt(contractArg.RatioNumerator)).Quo(res, big.NewInt(contractArg.RatioDenominator))
return (selfIdx + 1) % size
}
+// IsMatched check does the orders can be exchange
func IsMatched(orders []*common.Order) bool {
sortedOrders := sortOrders(orders)
if len(sortedOrders) == 0 {
}
func sortOrders(orders []*common.Order) []*common.Order {
+ if len(orders) == 0 {
+ return nil
+ }
+
orderMap := make(map[bc.AssetID]*common.Order)
firstOrder := orders[0]
for i := 1; i < len(orders); i++ {