caivega / ipfslib

Other
2 stars 1 forks source link

S1 - jt_sendTransaction:用小数发行代币后发现有余额与发行量不一致的情况 #160

Closed zyd82 closed 3 years ago

zyd82 commented 3 years ago

测试版本:v0.5.3-dev-20201228-2d55b2941a775a8c090b9039d57ef805dba3c516 用例编号:jt_sendTransaction_000512

第一种情况,发行量"9200000000.000001/AAT22",decimals是6,发行完查到余额是9200000000000002。

{
    "jsonrpc": "2.0",
    "method": "jt_sendTransaction",
    "params": [
        { 
            "type": "IssueCoin",
            "from": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
            "secret": "shhquPeZm7uQ6Rvjrqn6L2cR6H33u",
            "name": "slkjgs",
            "symbol": "AAT22",
            "decimals": "6",
            "total_supply": "9200000000.000001/AAT22",
            "local": true,
            "flags": 65536
        }
    ],
    "id": 1
}
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [
        {
            "result": "FBA2B727040FC140877EE7BFF658C791B8A2976DF4B2520E86E21E30F6D1BCBC"
        }
    ]
}
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "TransactionType": "IssueCoin",
        "Flags": 2147549184,
        "Account": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
        "Sequence": 47,
        "Fee": "10",
        "SigningPubKey": "034153EEBB406B3593AA7F31A4908E56ED820031DB87F4F2E868FB8E1686D5E1E3",
        "TxnSignature": "3045022100DF9216DB9226EB5D95DC48B995F15FB90998C5CE0F952EC379E8FB33C2163AF70220187CA251ADE20B9BD4A97F24C0245E7D07593B1CC804DA0557340B9DA7910709",
        "hash": "FBA2B727040FC140877EE7BFF658C791B8A2976DF4B2520E86E21E30F6D1BCBC",
        "Name": "slkjgs",
        "Decimals": 6,
        "TotalSupply": {
            "value": "9200000000000002",
            "currency": "AAT22",
            "issuer": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J"
        },
        "Owner": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
        "date": 662464465,
        "inLedger": 49886,
        "ledger_index": 49886,
        "meta": {
            "AffectedNodes": [
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Account": "jhCVwTcg5aYWMMdfDmwqYxBr5NMA1PDfyg",
                            "Sequence": 0,
                            "Balance": {
                                "value": "3475440",
                                "currency": "SWT",
                                "issuer": "jjjjjjjjjjjjjjjjjjjjjhoLvTp"
                            }
                        },
                        "LedgerEntryType": "AccountRoot",
                        "PreviousFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Account": "jhCVwTcg5aYWMMdfDmwqYxBr5NMA1PDfyg",
                            "Sequence": 0,
                            "Balance": {
                                "value": "3475430",
                                "currency": "SWT",
                                "issuer": "jjjjjjjjjjjjjjjjjjjjjhoLvTp"
                            }
                        }
                    }
                },
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Account": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
                            "Sequence": 47,
                            "Balance": {
                                "value": "999530",
                                "currency": "SWT",
                                "issuer": "jjjjjjjjjjjjjjjjjjjjjhoLvTp"
                            }
                        },
                        "LedgerEntryType": "AccountRoot",
                        "PreviousFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Account": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
                            "Sequence": 46,
                            "Balance": {
                                "value": "999540",
                                "currency": "SWT",
                                "issuer": "jjjjjjjjjjjjjjjjjjjjjhoLvTp"
                            }
                        }
                    }
                },
                {
                    "CreatedNode": {
                        "LedgerEntryType": "AccountRoot",
                        "NewFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Account": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
                            "Sequence": 47,
                            "Balance": {
                                "value": "9200000000000002",
                                "currency": "AAT22",
                                "issuer": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J"
                            }
                        }
                    }
                },
                {
                    "CreatedNode": {
                        "LedgerEntryType": "CurrencyRoot",
                        "NewFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Flags": 65536,
                            "Account": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
                            "Sequence": 1,
                            "Name": "slkjgs",
                            "Decimals": 6,
                            "TotalSupply": {
                                "value": "9200000000000002",
                                "currency": "AAT22",
                                "issuer": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J"
                            }
                        }
                    }
                }
            ],
            "TransactionIndex": 0,
            "TransactionResult": "tesSUCCESS"
        }
    }
}
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "balance": {
            "value": "9200000000000002",
            "currency": "AAT22",
            "issuer": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J"
        }
    }
}

第二种情况,发行量是 "9200000000.00000001/AAT23",decimals是8,发行完查到余额是920000000000000000。

{
    "jsonrpc": "2.0",
    "method": "jt_sendTransaction",
    "params": [
        { 
            "type": "IssueCoin",
            "from": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
            "secret": "shhquPeZm7uQ6Rvjrqn6L2cR6H33u",
            "name": "slkjgs",
            "symbol": "AAT23",
            "decimals": "8",
            "total_supply": "9200000000.00000001/AAT23",
            "local": true,
            "flags": 65536
        }
    ],
    "id": 1
}
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [
        {
            "result": "6F1E2DB5372102C112234DF1A3F6FEA1458532183EFDE9F4E91C949DF9844EF2"
        }
    ]
}
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "TransactionType": "IssueCoin",
        "Flags": 2147549184,
        "Account": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
        "Sequence": 48,
        "Fee": "10",
        "SigningPubKey": "034153EEBB406B3593AA7F31A4908E56ED820031DB87F4F2E868FB8E1686D5E1E3",
        "TxnSignature": "30440220388A7BE4CCAB47D6204E85F8E5C62480CDF1137F217F870723A6955CE955E89002206595F6266E4F80AB28263AACB76C423B6D8D40F01F7135669ED4A1EC1B696CFB",
        "hash": "6F1E2DB5372102C112234DF1A3F6FEA1458532183EFDE9F4E91C949DF9844EF2",
        "Name": "slkjgs",
        "Decimals": 8,
        "TotalSupply": {
            "value": "920000000000000000",
            "currency": "AAT23",
            "issuer": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J"
        },
        "Owner": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
        "date": 662471915,
        "inLedger": 51376,
        "ledger_index": 51376,
        "meta": {
            "AffectedNodes": [
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Account": "jhCVwTcg5aYWMMdfDmwqYxBr5NMA1PDfyg",
                            "Sequence": 0,
                            "Balance": {
                                "value": "3564260",
                                "currency": "SWT",
                                "issuer": "jjjjjjjjjjjjjjjjjjjjjhoLvTp"
                            }
                        },
                        "LedgerEntryType": "AccountRoot",
                        "PreviousFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Account": "jhCVwTcg5aYWMMdfDmwqYxBr5NMA1PDfyg",
                            "Sequence": 0,
                            "Balance": {
                                "value": "3564250",
                                "currency": "SWT",
                                "issuer": "jjjjjjjjjjjjjjjjjjjjjhoLvTp"
                            }
                        }
                    }
                },
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Account": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
                            "Sequence": 48,
                            "Balance": {
                                "value": "999520",
                                "currency": "SWT",
                                "issuer": "jjjjjjjjjjjjjjjjjjjjjhoLvTp"
                            }
                        },
                        "LedgerEntryType": "AccountRoot",
                        "PreviousFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Account": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
                            "Sequence": 47,
                            "Balance": {
                                "value": "999530",
                                "currency": "SWT",
                                "issuer": "jjjjjjjjjjjjjjjjjjjjjhoLvTp"
                            }
                        }
                    }
                },
                {
                    "CreatedNode": {
                        "LedgerEntryType": "AccountRoot",
                        "NewFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Account": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
                            "Sequence": 48,
                            "Balance": {
                                "value": "920000000000000000",
                                "currency": "AAT23",
                                "issuer": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J"
                            }
                        }
                    }
                },
                {
                    "CreatedNode": {
                        "LedgerEntryType": "CurrencyRoot",
                        "NewFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Flags": 65536,
                            "Account": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
                            "Sequence": 1,
                            "Name": "slkjgs",
                            "Decimals": 8,
                            "TotalSupply": {
                                "value": "920000000000000000",
                                "currency": "AAT23",
                                "issuer": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J"
                            }
                        }
                    }
                }
            ],
            "TransactionIndex": 0,
            "TransactionResult": "tesSUCCESS"
        }
    }
}
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "balance": {
            "value": "920000000000000000",
            "currency": "AAT23",
            "issuer": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J"
        }
    }
}
zyd82 commented 3 years ago

补充第三种情况,发行量时"9.000000000100000001/AAT25",decimals是18,最后余额是9000000000099999000

{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "balance": {
            "value": "9000000000099999000",
            "currency": "AAT25",
            "issuer": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J"
        }
    }
}
zyd82 commented 3 years ago

补充第四种情况,decimals是18,发行量是"9.00000000001000000001/AAT26"(小数点后面有20位),发行成功,最后余额是9000000000009999000。这个估计是同一类问题,所以也comment在这里。

{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "balance": {
            "value": "9000000000009999000",
            "currency": "AAT26",
            "issuer": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J"
        }
    }
}
caivega commented 3 years ago

9200000000.000001, 这个数,正好用golang的的系统库,big.Float, 也出问题了,之前几个相关的bug用big.Int及big.Float就可以搞定,看样还是得依赖第三方库

caivega commented 3 years ago

已修复,下一个build验证

zyd82 commented 3 years ago

@caivega , 这个问题在今天的v0.5.3-dev-20201229-549e506fdf4556bc9bfd675559fd201421bd3036版本上并没有完全解决,比如我发行量是"1.1/AAT32",decimals是18,结果发行结束后余额是1121690921598976。

{
    "jsonrpc": "2.0",
    "method": "jt_sendTransaction",
    "params": [
        { 
            "type": "IssueCoin",
            "from": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
            "secret": "shhquPeZm7uQ6Rvjrqn6L2cR6H33u",
            "name": "slkjgs",
            "symbol": "AAT32",
            "decimals": "18",
            "total_supply": "1.1/AAT32",
            "local": true,
            "flags": 131072
        }
    ],
    "id": 1
}
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": [
        {
            "result": "28DEF5DF57FFE067FF132C0FE2D3B49802F13B85ECCCF5B145E2C0DB24C36DE7"
        }
    ]
}
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "TransactionType": "IssueCoin",
        "Flags": 2147614720,
        "Account": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
        "Sequence": 76,
        "Fee": "10",
        "SigningPubKey": "034153EEBB406B3593AA7F31A4908E56ED820031DB87F4F2E868FB8E1686D5E1E3",
        "TxnSignature": "304402206D69F627F655D6D8DDAD3F4433702DDE29898200022D562E20A9CAD643E6B0B102201694ACB99A9E5B542378B8475E287672200906F52C1A6F2ADDDC247C37549214",
        "hash": "28DEF5DF57FFE067FF132C0FE2D3B49802F13B85ECCCF5B145E2C0DB24C36DE7",
        "Name": "slkjgs",
        "Decimals": 18,
        "TotalSupply": {
            "value": "1121690921598976",
            "currency": "AAT32",
            "issuer": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J"
        },
        "Owner": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
        "date": 662541575,
        "inLedger": 64247,
        "ledger_index": 64247,
        "meta": {
            "AffectedNodes": [
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Account": "jhCVwTcg5aYWMMdfDmwqYxBr5NMA1PDfyg",
                            "Sequence": 0,
                            "Balance": {
                                "value": "5838810",
                                "currency": "SWT",
                                "issuer": "jjjjjjjjjjjjjjjjjjjjjhoLvTp"
                            }
                        },
                        "LedgerEntryType": "AccountRoot",
                        "PreviousFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Account": "jhCVwTcg5aYWMMdfDmwqYxBr5NMA1PDfyg",
                            "Sequence": 0,
                            "Balance": {
                                "value": "5838800",
                                "currency": "SWT",
                                "issuer": "jjjjjjjjjjjjjjjjjjjjjhoLvTp"
                            }
                        }
                    }
                },
                {
                    "ModifiedNode": {
                        "FinalFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Account": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
                            "Sequence": 76,
                            "Balance": {
                                "value": "999240",
                                "currency": "SWT",
                                "issuer": "jjjjjjjjjjjjjjjjjjjjjhoLvTp"
                            }
                        },
                        "LedgerEntryType": "AccountRoot",
                        "PreviousFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Account": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
                            "Sequence": 75,
                            "Balance": {
                                "value": "999250",
                                "currency": "SWT",
                                "issuer": "jjjjjjjjjjjjjjjjjjjjjhoLvTp"
                            }
                        }
                    }
                },
                {
                    "CreatedNode": {
                        "LedgerEntryType": "AccountRoot",
                        "NewFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Account": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
                            "Sequence": 76,
                            "Balance": {
                                "value": "1121690921598976",
                                "currency": "AAT32",
                                "issuer": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J"
                            }
                        }
                    }
                },
                {
                    "CreatedNode": {
                        "LedgerEntryType": "CurrencyRoot",
                        "NewFields": {
                            "Hash": "0000000000000000000000000000000000000000000000000000000000000000",
                            "Flags": 131072,
                            "Account": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J",
                            "Sequence": 1,
                            "Name": "slkjgs",
                            "Decimals": 18,
                            "TotalSupply": {
                                "value": "1121690921598976",
                                "currency": "AAT32",
                                "issuer": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J"
                            }
                        }
                    }
                }
            ],
            "TransactionIndex": 0,
            "TransactionResult": "tesSUCCESS"
        }
    }
}
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": {
        "balance": {
            "value": "1121690921598976",
            "currency": "AAT32",
            "issuer": "jPdx7mG595P6CowtGYbxRkik9HdWUWtB2J"
        }
    }
}
caivega commented 3 years ago

跟 #161 的问题一样,已经解决,下一个build验证

zyd82 commented 3 years ago

@caivega 在v0.5.3-dev-20201229-e6b44577a82873fc39752544df05f0d922af079f版本上,发行量是"1.1/AAT32"、decimals是18,这种情况没问题了;但是我又试了发行量"8.1/AAT47"、decimals是18这种情况,结果余额是3488313981572612096,问题应该跟https://github.com/caivega/ipfslib/issues/161 还是一样的。

caivega commented 3 years ago

已经提交更新了,下一个build验证

zyd82 commented 3 years ago

v0.5.3-dev-20201231-72973ab08899c404ac4998f2e79c8b5fac0e199e版本上验证通过。