美文网首页
比特币交易

比特币交易

作者: 今早上 | 来源:发表于2018-02-01 22:55 被阅读0次

    UTXO - Unspent TransXtion Output

            未花费交易输出: 用公钥锁定(加密)一个数字

            比特币系统里没有比特币概念,只有UTXO

            比特币系统里没有账号概念,只有公钥锁定的UTXO

            比特币系统里没有账户余额概念,只有UTXO

            UTXO存在全节点的数据库里

            转账将消耗点属于你自己的UTXO,同时生成新的UTXO,并用接受者的公钥锁定

    交易包括两个部分:n输入和m输出 (n>=0,m>0)

            输入: 要被花费的UTXO +解锁脚本

            输出: UTXO + 锁定脚本

    交易的结构

            交易的输出:锁定的比特币数量  和 锁定脚本            

            交易的输入:解锁脚本

    UTXO记录删与加

            交易的确认: 只有进入到区块的交易才算确认

    交易在区块中确认

    交易验证脚本语言 - 基于栈的脚本语言

            栈(stack) - 操作数据的一种结构

                    只能做一段操作数据,后进 先出(last in First Out)

                    压栈(PUSH) 出栈(POP)

    逆波兰表示法

        所有的操作运算符都位于操作数后面

        遇到操作数字, 则压栈 PUSH

        遇到运算符   (+,-,*,/):

            先将2个操作数字出栈POP

            然后用后面的运算符对两个数字计算

            然后在将计算结果压栈PUSH

        一般标识法:(1+2) * 3 == 9 ?

        逆波兰表示法:1 2 + 3 * 9 == ?

    交易验证

            锁定脚本

                    OP_DUP OP_HASH160<发送者 公钥哈希> OP_EQUALVERIFY OP_CHECKSIG

            解锁脚本

                    <发送者签名><发送者公钥>

            交易验证: 运行解锁脚本 + 锁定脚本 => True

            验证主要:

                交易的大小要小于区块大小的上限

                交易输入的UTXO是存在的

                交易输入UTXO没有被其他的交易引用-防止双花(double spending)

                输入总金额 > 输出总金额

                解锁脚本验证

            将合格的交易加入到本地的transaction 数据库中,并将合法的交易转给临近的节点

    相关文章

      网友评论

          本文标题:比特币交易

          本文链接:https://www.haomeiwen.com/subject/cryjzxtx.html