本發(fā)明涉及數(shù)字貨幣領(lǐng)域,尤其涉及一種基于數(shù)字貨幣的電子交易方法及系統(tǒng)。
背景技術(shù):
現(xiàn)有的數(shù)字貨幣交易中,收款方將支付地址發(fā)給付款方,付款方根據(jù)支付地址將數(shù)字貨幣轉(zhuǎn)給收款方,由于付款方?jīng)]有足夠的信息驗證收款方的身份,收款方的身份很有可能被中間人劫持和偽造,數(shù)字貨幣很有可能被盜??;在收款方和付款方進(jìn)行信息傳遞過程中通常只是簡單的支付地址,傳輸過程中所述傳輸?shù)男畔⒍际敲魑?,容易?dǎo)致在傳輸過程中信息外泄;收款方與付款方進(jìn)行的交易中沒有支付證明,產(chǎn)生糾紛時無法追究;基于數(shù)字貨幣的特性,付款方須將交易信息廣播到數(shù)字貨幣網(wǎng)絡(luò),交易信息在數(shù)字貨幣網(wǎng)絡(luò)中經(jīng)過多次確認(rèn)之后,收款方才能確認(rèn)完成交易或確認(rèn)交易失敗,在數(shù)字貨幣網(wǎng)絡(luò)對交易信息的確認(rèn)過程中,用戶需要等待很長時間,導(dǎo)致基于數(shù)字貨幣的電子交易的效率低、用戶體驗差。
技術(shù)實現(xiàn)要素:
本發(fā)明為解決上述現(xiàn)有技術(shù)中存在的技術(shù)問題提供一種基于數(shù)字貨幣的電子交易方法及系統(tǒng)。
本發(fā)明提供的一種基于數(shù)字貨幣的電子交易方法,包括以下步驟:
步驟S1:數(shù)字貨幣錢包接收來自電商服務(wù)器的支付請求包,所述支付請求包中包括支付請求信息和所述電商服務(wù)器使用自身保存的私鑰對所述支付請求信息的簽名信息,所述支付請求信息中包括電商證書、交易金額和電商公鑰地址;
步驟S2:所述數(shù)字貨幣錢包從所述支付請求包的所述支付請求信息中獲取所述電商證書和所述簽名信息,使用所述電商證書對所述簽名信息進(jìn)行驗證,驗證通過則執(zhí)行步驟S3,驗證未通過則拒絕交易;
步驟S3:所述數(shù)字貨幣錢包獲取具有與所述交易金額等額貨幣值的交易數(shù)據(jù)、與所述交易數(shù)據(jù)對應(yīng)的交易標(biāo)識以及與所述交易數(shù)據(jù)對應(yīng)的自身保存的數(shù)字貨幣私鑰,并從所述支付請求包的所述支付請求信息中獲取所述電商公鑰地址,使用所述數(shù)字貨幣私鑰對所述交易數(shù)據(jù)和所述電商公鑰地址進(jìn)行簽名,得到簽名結(jié)果;根據(jù)所述簽名結(jié)果、所述交易標(biāo)識和與所述數(shù)字貨幣私鑰對應(yīng)的數(shù)字貨幣公鑰組織交易信息,并根據(jù)所述交易信息組織支付包;
步驟S4:所述數(shù)字貨幣錢包將所述交易信息廣播到數(shù)字貨幣網(wǎng)絡(luò),并將所述支付包發(fā)送給所述電商服務(wù)器;
步驟S5:所述電商服務(wù)器接收來自所述數(shù)字貨幣錢包的所述支付包,使用所述支付包中的所述數(shù)字貨幣公鑰對所述簽名結(jié)果進(jìn)行驗證,驗證通過則執(zhí)行步驟S6;驗證未通過則結(jié)束交易;
步驟S6:所述電商服務(wù)器從所述支付包中獲取所述交易標(biāo)識,根據(jù)所述交易標(biāo)識從所述數(shù)字貨幣網(wǎng)絡(luò)中找到所述交易信息,判斷在預(yù)設(shè)時間內(nèi)是否從所述數(shù)字貨幣網(wǎng)絡(luò)中查找到大于或等于預(yù)設(shè)次數(shù)的對所述交易信息的驗證通過信息,是則完成交易,否則結(jié)束交易。
本發(fā)明提供的一種基于數(shù)字貨幣的電子交易的系統(tǒng),包括數(shù)字貨幣錢包和電商服務(wù)器;
所述數(shù)字貨幣錢包包括:
保存模塊,用于保存數(shù)字貨幣私鑰;
第一接收模塊,用于接收來自所述電商服務(wù)器的支付請求包,所述支付請求包中包括支付請求信息和所述電商服務(wù)器使用自身保存的私鑰對所述支付請求信息的簽名信息,所述支付請求信息中包括電商證書、交易金額和電商公鑰地址;
第一獲取模塊,用于從所述第一接收模塊接收的所述支付請求包的所述支付請求信息中獲取所述電商證書和所述簽名信息;
第一驗證模塊,用于使用所述第一獲取模塊獲取的所述電商證書對所述第一獲取模塊獲取的所述簽名信息進(jìn)行驗證;
交易拒絕模塊,用于當(dāng)所述第一驗證模塊對所述簽名信息驗證未通過時,拒絕交易;
第二獲取模塊,用于當(dāng)所述第一驗證模塊對所述簽名信息驗證通過時,獲取具有與所述第一接收模塊接收的所述支付請求包中的所述交易金額等額貨幣值的交易數(shù)據(jù)、與所述交易數(shù)據(jù)對應(yīng)的交易標(biāo)識以及與所述交易數(shù)據(jù)對應(yīng)的所述保存模塊保存的所述數(shù)字貨幣私鑰;
第三獲取模塊,用于當(dāng)所述第一驗證模塊對所述簽名信息驗證通過時,從所述第一接收模塊接收的所述支付請求包的所述支付請求信息中獲取所述電商公鑰地址;
第一簽名模塊,用于使用所述第二獲取模塊獲取的所述數(shù)字貨幣私鑰對所述第二獲取模塊獲取的所述交易數(shù)據(jù)和所述第三獲取模塊獲取的所述電商公鑰地址進(jìn)行簽名,得到簽名結(jié)果;
第一組織模塊,用于根據(jù)所述第一簽名模塊得到的所述簽名結(jié)果、所述第二獲取模塊獲取的所述交易標(biāo)識和與所述第二獲取模塊獲取的所述數(shù)字貨幣私鑰對應(yīng)的數(shù)字貨幣公鑰組織交易信息;
第二組織模塊,用于根據(jù)所述第一組織模塊組織的所述交易信息組織支付包;
廣播模塊,用于將所述第一組織模塊組織的所述交易信息廣播到數(shù)字貨幣網(wǎng)絡(luò);
第一發(fā)送模塊,用于將所述第二組織模塊組織的所述支付包發(fā)送給所述電商服務(wù)器;
所述電商服務(wù)器包括:
第二接收模塊,用于接收來自所述數(shù)字貨幣錢包的所述支付包;
第二驗證模塊,用于使用所述第二接收模塊接收的所述支付包中的所述數(shù)字貨幣公鑰對所述第二接收模塊接收的所述支付包中的所述簽名結(jié)果進(jìn)行驗證;
第四獲取模塊,用于當(dāng)所述第二驗證模塊的驗證結(jié)果為驗證通過時,從所述第二接收模塊接收的所述支付包中獲取所述交易標(biāo)識,根據(jù)所述交易標(biāo)識從所述數(shù)字貨幣網(wǎng)絡(luò)中找到所述交易信息;
判斷模塊,用于判斷在預(yù)設(shè)時間內(nèi)是否從所述數(shù)字貨幣網(wǎng)絡(luò)中查找到大于或等于預(yù)設(shè)次數(shù)的對所述第四獲取模塊找到的所述交易信息的驗證通過信息;
完成交易模塊,用于當(dāng)所述判斷模塊判斷結(jié)果為是時,完成交易;
交易結(jié)束模塊,用于當(dāng)所述第二驗證模塊的驗證結(jié)果為驗證未通過時,結(jié)束交易;用于當(dāng)所述判斷模塊判斷結(jié)果為否時,結(jié)束交易。
本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:數(shù)字貨幣錢包從支付請求信息中獲取電商證書,使用電商證書對支付請包中的簽名信息進(jìn)行驗證,驗證通過時才組織交易信息,驗證未通過則拒絕交易,從而提供了安全的支付證明,可以防止支付請求信息中的電商公鑰地址在傳給付款方時被惡意的中間人篡改,保證電商公鑰地址不被中間人劫持和偽造,同時當(dāng)交易雙方產(chǎn)生糾紛時,簽名信息可以當(dāng)做支付證明防止對方耍賴;電商服務(wù)器接收到支付包時,對支付包中的簽名結(jié)果進(jìn)行驗證,電商服務(wù)器根據(jù)驗證結(jié)果就知道交易結(jié)果為成功或失敗,不用等待預(yù)設(shè)時間后根據(jù)從數(shù)字貨幣網(wǎng)絡(luò)中查找到的對交易信息的驗證通過信息的次數(shù)確認(rèn)交易是成功還是失敗,從而有效提高了數(shù)字貨幣電子交易的效率。
附圖說明
圖1所示為本發(fā)明實施例1中一種基于數(shù)字貨幣的電子交易方法流程圖;
圖2所述為本發(fā)明實施例2中一種基于數(shù)字貨幣的電子交易方法流程圖;
圖3所示為本發(fā)明實施例3中一種基于數(shù)字貨幣的電子交易的系統(tǒng)模塊組成框圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進(jìn)一步地詳細(xì)描述。
實施例1
本發(fā)明提供一種基于數(shù)字貨幣的電子交易方法,如圖1所示,該方法具體包括:
步驟S1:數(shù)字貨幣錢包接收來自電商服務(wù)器的支付請求包,支付請求包中包括支付請求信息和電商服務(wù)器使用自身保存的私鑰對支付請求信息的簽名信息,支付請求信息中包括電商證書、交易金額和電商公鑰地址;
步驟S2:數(shù)字貨幣錢包從支付請求包的支付請求信息中獲取電商證書和簽名信息,使用電商證書對簽名信息進(jìn)行驗證,驗證通過則執(zhí)行步驟S3,驗證未通過則拒絕交易;
步驟S3:數(shù)字貨幣錢包獲取具有與交易金額等額貨幣值的交易數(shù)據(jù)、與交易數(shù)據(jù)對應(yīng)的交易標(biāo)識以及與交易數(shù)據(jù)對應(yīng)的自身保存的數(shù)字貨幣私鑰,并從支付請求包的支付請求信息中獲取電商公鑰地址,使用數(shù)字貨幣私鑰對交易數(shù)據(jù)和電商公鑰地址進(jìn)行簽名,得到簽名結(jié)果;根據(jù)簽名結(jié)果、交易標(biāo)識和與數(shù)字貨幣私鑰對應(yīng)的數(shù)字貨幣公鑰組織交易信息,并根據(jù)交易信息組織支付包;
步驟S4:數(shù)字貨幣錢包將交易信息廣播到數(shù)字貨幣網(wǎng)絡(luò),并將支付包發(fā)送給電商服務(wù)器;
步驟S5:電商服務(wù)器接收來自數(shù)字貨幣錢包的支付包,使用支付包中的數(shù)字貨幣公鑰對簽名結(jié)果進(jìn)行驗證,驗證通過則執(zhí)行步驟S6;驗證未通過則結(jié)束交易;
步驟S6:電商服務(wù)器從支付包中獲取交易標(biāo)識,根據(jù)交易標(biāo)識從數(shù)字貨幣網(wǎng)絡(luò)中找到交易信息,判斷在預(yù)設(shè)時間內(nèi)是否從數(shù)字貨幣網(wǎng)絡(luò)中查找到大于或等于預(yù)設(shè)次數(shù)的對交易信息的驗證通過信息,是則完成交易,否則結(jié)束交易。
可選地,本實施例上述方法中,支付請求信息中還包括電商證書的證書鏈信息;
相應(yīng)地,步驟S2之前,還包括:
數(shù)字貨幣錢包從支付請求包的支付請求信息中獲取電商證書的證書鏈信息,使用電商證書的證書鏈信息驗證電商證書是否有效,是則執(zhí)行步驟S2;否則拒絕交易。
可選地,本實施例上述方法中,上述步驟S1之前,還包括:
步驟S01:電商服務(wù)器接收來自數(shù)字貨幣錢包的交易請求,獲取與交易請求對應(yīng)的交易金額,根據(jù)交易金額、自身保存的電商公鑰地址和自身保存的電商證書組織支付請求信息;
步驟S02:電商服務(wù)器使用自身保存的私鑰對支付請求信息進(jìn)行簽名,生成簽名信息,并根據(jù)簽名信息和支付請求信息組織支付請求包,將支付請求包發(fā)送給數(shù)字貨幣錢包。
具體地,上述步驟S02中,電商服務(wù)器使用自身保存的私鑰對支付請求信息進(jìn)行簽名,生成所述簽名信息,具體為:電商服務(wù)器對支付請求信息根據(jù)預(yù)設(shè)算法進(jìn)行運算得到第一運算結(jié)果,使用自身保存的私鑰對第一運算結(jié)果進(jìn)行簽名,生成第一簽名值;簽名信息中包括第一運算結(jié)果和第一簽名值;
相應(yīng)地,上述步驟S2中,數(shù)字貨幣錢包使用電商證書對簽名信息進(jìn)行驗證,具體為:數(shù)字貨幣錢包使用電商證書中的公鑰對第一簽名值進(jìn)行解密得到解密數(shù)據(jù),對支付請求信息根據(jù)預(yù)設(shè)算法進(jìn)行運算得到第二運算結(jié)果,判斷解密數(shù)據(jù)是否與第二運算結(jié)果相同,是則驗證通過,否則驗證未通過。
具體地,上述步驟S01中,電商服務(wù)器根據(jù)交易金額、電商公鑰地址和電商證書組織支付請求信息,具體包括:
步驟d11:電商服務(wù)器將交易金額和電商公鑰地址填到電商的輸出列表中;
步驟d12:電商服務(wù)器根據(jù)電商的輸出列表和電商證書組織支付請求信息;
相應(yīng)地,上述步驟S1中,交易金額和電商公鑰地址具體為包括交易金額和電商公鑰地址的電商的輸出列表。
進(jìn)一步地,上述步驟S01中,電商服務(wù)器根據(jù)交易金額信息、電商公鑰地址和電商證書組織支付請求之前,還包括:電商服務(wù)器生成上述電商公鑰地址。
進(jìn)一步地,上述步驟S02中,電商服務(wù)器使用自身保存的私鑰對支付請求信息進(jìn)行簽名之前,還包括:電商服務(wù)器生成傳輸?shù)刂罚?/p>
相應(yīng)地,支付請求信息中還包括傳輸?shù)刂罚?/p>
上述步驟S02中,電商服務(wù)器將支付請求包發(fā)送給數(shù)字貨幣錢包,具體為:電商服務(wù)器通過傳輸?shù)刂穼⒅Ц墩埱蟀l(fā)送給數(shù)字貨幣錢包;
上述步驟S4中,數(shù)字貨幣錢包將支付包發(fā)送給電商服務(wù)器,具體為:數(shù)字貨幣錢包從支付請求包中獲取傳輸?shù)刂?,通過傳輸?shù)刂穼⒅Ц栋l(fā)送給電商服務(wù)器。
具體地,本實施例中上述傳輸?shù)刂肪唧w為基于SSL加密的傳輸?shù)刂贰?/p>
可選地,本實施例上述方法中,上述支付包中還包括退款地址;
相應(yīng)地,上述步驟S3中,數(shù)字貨幣錢包根據(jù)交易信息組織支付包,具體為:數(shù)字貨幣錢包根據(jù)退款地址和交易信息組織支付包。
進(jìn)一步地,上述數(shù)字貨幣錢包根據(jù)退款地址和交易信息組織支付包之前,還包括:數(shù)字貨幣錢包生成上述退款地址。
可選地,本實施例上述方法中,上述支付請求信息中還包括電商的電子證書信息;
相應(yīng)地,上述步驟S3之前,還包括:數(shù)字貨幣錢包顯示電商的電子證書信息,接收到用戶輸入的確認(rèn)信息時,執(zhí)行步驟S3;接收到用戶輸入的取消信息,或接收超時信息時,結(jié)束交易。
可選地,本實施例上述方法中,上述步驟S3中,數(shù)字貨幣錢包使用數(shù)字貨幣私鑰對交易數(shù)據(jù)和電商公鑰地址進(jìn)行簽名,得到簽名結(jié)果,具體為:數(shù)字貨幣錢包對交易數(shù)據(jù)和電商公鑰地址根據(jù)預(yù)設(shè)算法進(jìn)行運算,得到第三運算結(jié)果,使用數(shù)字貨幣私鑰對第三運算結(jié)果進(jìn)行簽名得到簽名值,上述簽名結(jié)果中包括第三運算結(jié)果和簽名值;
相應(yīng)地,上述步驟S5中,電商服務(wù)器使用數(shù)字貨幣公鑰對簽名結(jié)果進(jìn)行驗證,具體為:電商服務(wù)器根據(jù)交易標(biāo)識找到交易數(shù)據(jù),對交易數(shù)據(jù)和電商公鑰地址根據(jù)預(yù)設(shè)算法進(jìn)行運算生成第四運算結(jié)果;使用交易信息中的數(shù)字貨幣公鑰對簽名值進(jìn)行驗簽得到驗簽數(shù)據(jù),判斷驗簽數(shù)據(jù)是否與第四運算結(jié)果相等,是則驗證通過,否則驗證未通過。
可選地,本實施例上述方法中,上述步驟S3中,數(shù)字貨幣錢包獲取具有與交易金額等額貨幣值的交易數(shù)據(jù)、與交易數(shù)據(jù)對應(yīng)的交易標(biāo)識以及與交易數(shù)據(jù)對應(yīng)的自身保存的數(shù)字貨幣私鑰,具體為:數(shù)字貨幣錢包找到具有大于或等于交易金額貨幣值的數(shù)字貨幣公鑰地址,獲取數(shù)字貨幣公鑰地址對應(yīng)的具有與交易金額等額貨幣值的交易標(biāo)識,根據(jù)交易標(biāo)識找到交易數(shù)據(jù),并根據(jù)數(shù)字貨幣公鑰地址找到對應(yīng)的數(shù)字貨幣公鑰,根據(jù)數(shù)字貨幣公鑰找到自身保存的數(shù)字貨幣私鑰。
可選地,本實施例上述方法中,上述步驟S6中電商服務(wù)器判斷在預(yù)設(shè)時間內(nèi)是否從數(shù)字貨幣網(wǎng)絡(luò)中查找到大于或等于預(yù)設(shè)次數(shù)的對交易信息的驗證通過信息,具體為:電商服務(wù)器判斷在預(yù)設(shè)時間內(nèi)是否從數(shù)字貨幣網(wǎng)絡(luò)的區(qū)塊鏈數(shù)據(jù)中查找到大于或等于預(yù)設(shè)次數(shù)的與交易信息對應(yīng)的交易記錄,是則完成交易,否則結(jié)束交易;數(shù)字貨幣網(wǎng)絡(luò)每次對交易信息驗證通過之后都將交易信息記錄在區(qū)塊鏈數(shù)據(jù)中。
本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:數(shù)字貨幣錢包從支付請求信息中獲取電商證書,使用電商證書對支付請包中的簽名信息進(jìn)行驗證,驗證通過時才組織交易信息,驗證未通過則拒絕交易,從而提供了安全的支付證明,可以防止支付請求信息中的電商公鑰地址在傳給付款方時被惡意的中間人篡改,保證電商公鑰地址不被中間人劫持和偽造,同時當(dāng)交易雙方產(chǎn)生糾紛時,簽名信息可以當(dāng)做支付證明防止對方耍賴;電商服務(wù)器接收到支付包時,對支付包中的簽名結(jié)果進(jìn)行驗證,電商服務(wù)器根據(jù)驗證結(jié)果就知道交易結(jié)果為成功或失敗,不用等待預(yù)設(shè)時間后根據(jù)從數(shù)字貨幣網(wǎng)絡(luò)中查找到的對交易信息的驗證通過信息的次數(shù)確認(rèn)交易是成功還是失敗,從而有效提高了數(shù)字貨幣電子交易的效率。電商服務(wù)器和數(shù)字貨幣錢包之間的信息傳輸不再是一串不可靠的支付地址,而是數(shù)字貨幣錢包生成的數(shù)字貨幣錢包和電商服務(wù)器可以識別的傳輸?shù)刂?,保證在信息傳遞過程中不會外泄;數(shù)字貨幣錢包發(fā)送給電商服務(wù)器的支付包中包括退款地址,當(dāng)因為某些原因電商服務(wù)器需要給消費者退款時,電商不用很繁瑣的聯(lián)系消費者獲取退款地址,提高了退款效率。
實施例2
本發(fā)明提供一種基于數(shù)字貨幣的電子交易方法,如圖2所示,該方法具體包括:
步驟10:數(shù)字貨幣錢包向電商服務(wù)器發(fā)送交易請求。
本實施例中的一個實例為:當(dāng)消費者用戶通過數(shù)字貨幣錢包在電商服務(wù)器上選購?fù)晟唐罚M(jìn)入電商服務(wù)器的結(jié)算頁面,并點擊“支付”按鈕之后,數(shù)字貨幣錢包向電商服務(wù)器發(fā)送交易請求。
步驟11:電商服務(wù)器接收到交易請求,獲取與交易請求對應(yīng)的交易金額,生成傳輸?shù)刂泛碗娚坦€地址。
具體地,電商服務(wù)器接收到交易請求之后,獲取到與交易請求對應(yīng)的商品的交易金額,例如,商品的交易金額為80satoshis(satoshis為數(shù)字貨幣的最小單位)。
具體地,電商服務(wù)器生成的傳輸?shù)刂肪唧w為基于SSL加密的傳輸?shù)刂?。本實施例中,SSL加密的傳輸?shù)刂窞橐詇ttps開頭的傳輸?shù)刂罚褂肧SL加密的傳輸?shù)刂穫鬏斝畔?,可以保證所傳輸?shù)男畔⒉粫庑梗c明文傳輸?shù)刂废啾燃用艿膫鬏數(shù)刂钒踩暂^高。
具體地,電商服務(wù)器生成電商公鑰地址,具體為:電商服務(wù)器生成電商密鑰對,根據(jù)電商密鑰對中的電商公鑰生成電商公鑰地址。其中,電商密鑰對包括電商公鑰和電商私鑰。
本實施例中,數(shù)字貨幣可以為比特幣、萊特幣、狗狗幣、瑞波幣、Lisk數(shù)字貨幣、以太坊、以太幣中的一種。
步驟12:電商服務(wù)器根據(jù)交易金額、傳輸?shù)刂?、電商公鑰地址、自身保存的電商證書組織支付請求信息。
具體地,步驟12具體包括:
步驟d11:電商服務(wù)器將交易金額和電商公鑰地址填到電商的輸出列表中;
具體地,步驟d11具體為:電商服務(wù)器按照數(shù)字貨幣交易規(guī)則將交易金額和電商公鑰地址填到電商的輸出列表中。
按照數(shù)字貨幣交易規(guī)則,電商的輸出列表中為一個輸出或多個輸出,當(dāng)電商的輸出列表中有一個輸出時,會生成一個電商公鑰和一個電商私鑰,并根據(jù)電商公鑰生成電商公鑰地址;當(dāng)電商的輸出列表中有多個輸出時,會生成對應(yīng)的多個電商公鑰和多個對應(yīng)的電商私鑰,并根據(jù)多個電商公鑰生成多個對應(yīng)的電商公鑰地址。其中,電商公鑰、電商私鑰和電商公鑰地址都是一一對應(yīng)關(guān)系。
例如,當(dāng)輸出列表只有一個輸出時,步驟d11具體為:電商服務(wù)器生成一對電商密鑰對,根據(jù)電商密鑰對中的電商公鑰生成電商公鑰地址,將電商公鑰地址和交易金額填到電商的輸出列表中。
步驟d12:電商服務(wù)器根據(jù)電商的輸出列表、電商證書組織支付請求信息。
步驟13:電商服務(wù)器使用自身保存的私鑰對支付請求信息進(jìn)行簽名,生成簽名信息,根據(jù)簽名信息和支付請求信息組織支付請求包,將支付請求包通過傳輸?shù)刂钒l(fā)送給數(shù)字貨幣錢包。
具體地,電商服務(wù)器使用自身保存的私鑰對支付請求信息進(jìn)行簽名,具體為:電商服務(wù)器對支付請求信息根據(jù)預(yù)設(shè)算法進(jìn)行運算得到第一運算結(jié)果,使用自身保存的私鑰對第一運算結(jié)果進(jìn)行簽名,生成第一簽名值;簽名信息中包括第一運算結(jié)果和第一簽名值;
進(jìn)一步具體地,電商服務(wù)器對支付請求信息根據(jù)預(yù)設(shè)算法進(jìn)行運算生成第一運算結(jié)果,對第一運算結(jié)果進(jìn)行Base58編碼,使用自身保存的私鑰對編碼后的第一運算結(jié)果簽名,生成第一簽名值。
例如,預(yù)設(shè)算法為預(yù)設(shè)的哈希算法,生成的第一運算結(jié)果為第一哈希值,電商服務(wù)器對支付請求信息做哈希運算生成第一哈希值,對第一哈希值進(jìn)行Base58編碼如下:
77 47 5d c2 4a 69 9f b2 f7 81 c2 ae 3b 73 03 a6 3d ac a2 5f c1 6a e9 b5 f5 48 82 47 eb 86 fc 40;
本實施中,電商服務(wù)器自身保存的私鑰與自身保存的電商證書中的公鑰相對應(yīng)。
本實施例步驟13中,電商服務(wù)器將支付請求包通過傳輸?shù)刂钒l(fā)送給數(shù)字貨幣錢包,與現(xiàn)有技術(shù)中基于數(shù)字貨幣的電子交易中通常通過未加密網(wǎng)絡(luò)(例如WiFi、藍(lán)牙、NFC、條形碼)傳輸交易數(shù)據(jù)相比,可以保證所傳輸?shù)男畔⒉粫庑?,從而提高交易的安全性?/p>
步驟14:數(shù)字貨幣錢包接收支付請求包,根據(jù)支付請求包中的電商證書驗證支付請求包中的簽名信息是否合法,是則執(zhí)行步驟15,否則拒絕交易。
具體地,步驟14具體為:數(shù)字貨幣錢包使用支付請求包中電商證書中的公鑰對支付請求包中的第一簽名值進(jìn)行解密得到解密數(shù)據(jù),對支付請求包中支付請求信息根據(jù)預(yù)設(shè)算法進(jìn)行運算,生成第二運算結(jié)果,判斷解密數(shù)據(jù)是否與第二運算結(jié)果相同,是則驗證通過;否則驗證未通過。
進(jìn)一步地,數(shù)字貨幣錢包對支付請求包中支付請求信息根據(jù)預(yù)設(shè)算法進(jìn)行運算,生成第二運算結(jié)果之后,還包括:數(shù)字貨幣錢包對第二運算結(jié)果進(jìn)行Base58編碼。本實施例中,步驟14中的預(yù)設(shè)算法是與步驟13中的預(yù)設(shè)算法相同,例如,是相同的預(yù)設(shè)的哈希算法。
例如,數(shù)字貨幣錢包使用電商證書中公鑰對支付請求包中的第一簽名值進(jìn)行解密得到的解密數(shù)據(jù)數(shù)據(jù)如下:77 47 5d c2 4a 69 9f b2 f7 81 c2 ae 3b 73 03 a6 3d ac a2 5f c1 6a e9 b5 f5 48 82 47 eb 86 fc 40;
數(shù)字貨幣錢包對第二運算結(jié)果進(jìn)行編碼得到的數(shù)據(jù)如下:77 47 5d c2 4a 69 9f b2 f7 81 c2 ae 3b 73 03 a6 3d ac a2 5f c1 6a e9 b5 f5 48 82 47 eb 86 fc 40;
比較可以得出:解密數(shù)據(jù)與編碼后的第二運算結(jié)果相同,則驗證通過。
可選地,上述步驟12中電商服務(wù)器組織的支付請求信息中還包括電商證書的證書鏈信息;
相應(yīng)地,步驟14之前還包括:
步驟14-01:數(shù)字貨幣錢包使用支付請求包中電商證書的證書鏈信息驗證支付請求包中的電商證書是否有效,是則執(zhí)行步驟14;否則拒絕交易;
本實施例中上述步驟14-01具體為:數(shù)字貨幣錢包使用電商證書的證書鏈信息中對電商證書進(jìn)行驗證,當(dāng)證書鏈信息中的所有證書都通過了對應(yīng)的母證書的驗證時,電商證書有效;否則電商證書無效,拒絕交易。
電商證書的證書鏈信息中有一個根證書,根證書可以作為母證書簽發(fā)子證書,子證書還可以作為母證書繼續(xù)簽發(fā)子證書,以此類推,形成一個證書鏈。上述步驟104-01中,電商證書通過與其對應(yīng)的母證書的驗證,電商證書的母證書作為子證書通過與其對應(yīng)的母證書的驗證,以此類推,在證書鏈上的每個子證書都通過對應(yīng)的母證書的驗證,順著證書鏈信息驗證到根證書,所有驗證都通過時,才可以證明電商證書是合法有效的。根證書只有電商服務(wù)器中有,其他惡意程序無法獲取。
進(jìn)一步地,上述步驟12中電商服務(wù)器組織的支付請求信息中還包括公鑰體系基礎(chǔ)類型;
相應(yīng)地,上述步驟14-01之前還包括:
步驟14-00:數(shù)字貨幣錢包驗證支付請求包中的公鑰體系基礎(chǔ)類型是否為“none”,是則拒絕交易;否則執(zhí)行步驟14-01;
可選地,上述步驟14-01之前,還包括:數(shù)字貨幣錢包判斷接收的支付請求包的大小是否超過預(yù)設(shè)范圍,是則拒絕交易;否則執(zhí)行步驟14-01;
例如,數(shù)字貨幣錢包判斷支付請求包的大小是否大于50000字節(jié),是則超過預(yù)設(shè)范圍,否則沒有超過預(yù)設(shè)范圍。
支付請求包超過50000字節(jié)時,數(shù)字貨幣錢包拒絕接收,從而有效防止接收惡意數(shù)據(jù)包,避免因接收惡意數(shù)據(jù)而導(dǎo)致的系統(tǒng)崩潰。
可選地,上述電商服務(wù)器組織的支付請求信息中還包括網(wǎng)絡(luò)類型;
相應(yīng)地,上述步驟14之前還包括:數(shù)字貨幣錢包判斷支付請求包中的網(wǎng)絡(luò)類型是否為“main”或“test”,是則執(zhí)行步驟14,否則拒絕交易。其中“main”為數(shù)字貨幣網(wǎng)絡(luò),“test”為數(shù)字貨幣測試網(wǎng)絡(luò)。
本實施例中,數(shù)字貨幣網(wǎng)絡(luò)為比特幣網(wǎng)絡(luò)、萊特幣網(wǎng)絡(luò)、狗狗幣網(wǎng)絡(luò)、瑞波幣網(wǎng)絡(luò)、Lisk數(shù)字貨幣網(wǎng)絡(luò)、以太坊網(wǎng)絡(luò)、以太幣網(wǎng)絡(luò)中的一種。
步驟15:數(shù)字貨幣錢包獲取具有與支付請求包中交易金額等額貨幣值的交易數(shù)據(jù)、與交易數(shù)據(jù)對應(yīng)的交易標(biāo)識、與交易數(shù)據(jù)對應(yīng)的自身保存的數(shù)字貨幣私鑰,從支付請求包中獲取電商公鑰地址,使用數(shù)字貨幣私鑰對交易數(shù)據(jù)和電商公鑰地址進(jìn)行簽名,得到簽名結(jié)果,根據(jù)簽名結(jié)果、交易標(biāo)識和與數(shù)字貨幣私鑰對應(yīng)的數(shù)字貨幣公鑰組織交易信息,根據(jù)交易信息組織支付包,將交易信息廣播到數(shù)字貨幣網(wǎng)絡(luò),將支付包發(fā)送給電商服務(wù)器。
可選地,上述步驟12中電商服務(wù)器組織的支付請求信息中還包括電商服務(wù)器自身保存的電商的電子證書信息;
相應(yīng)地,步驟15之前還包括:數(shù)字貨幣錢包顯示支付請求包中電商的電子證書信息,當(dāng)接收到用戶輸入的確認(rèn)信息時,執(zhí)行步驟15;當(dāng)接收到用戶輸入的取消信息,或接收到超時信息時,結(jié)束交易。
具體地,數(shù)字貨幣錢包顯示電商的電子證書信息時,用戶根據(jù)顯示的電子證書信息判斷電商服務(wù)器的身份是否合法,當(dāng)用戶確認(rèn)身份合法時,點擊確認(rèn)按鍵之后,數(shù)字貨幣錢包接收到用戶輸入的確認(rèn)信息;當(dāng)用戶確認(rèn)身份不合法時,點擊取消按鍵之后,數(shù)字貨幣錢包接收到用戶輸入的取消信息,當(dāng)超過預(yù)設(shè)時間之后用戶沒有點擊確認(rèn)按鍵或取消按鍵,數(shù)字貨幣錢包接收到超時信息。本實施例中,數(shù)字貨幣錢包顯示的電商的電子證書信息可以包括電商名稱以及電商的電子證書是否合法等信息。
進(jìn)一步地,上述步驟12中電商服務(wù)器組織的支付請求信息中還包括顯示提示信息。顯示提示信息是電商設(shè)定的可以在數(shù)字貨幣錢包顯示的信息,例如,顯示提示信息中可以包括交易金額信息、商品名稱等信息。相應(yīng)地,步驟15中數(shù)字貨幣錢包接收到用戶輸入的確認(rèn)信息、取消信息,或超時信息之前還包括:數(shù)字貨幣錢包根據(jù)支付請求信息中的顯示提示信息顯示相應(yīng)信息。例如,數(shù)字貨幣錢包根據(jù)顯示提示信息顯示交易金額、商品名稱等信息。用戶可以根據(jù)數(shù)字貨幣錢包顯示的顯示提示信息和電商的電子證書選擇點擊取消按鍵或點擊確認(rèn)按鍵。
可選地,步驟12中,電商服務(wù)器組織的支付請求信息中還包括組織支付請求信息的時間和支付請求信息的有效時間;
相應(yīng)地,步驟15中,在數(shù)字貨幣錢包組織交易信息之前,還包括:數(shù)字貨幣錢包根據(jù)支付請求包中組織支付請求信息的時間和支付請求信息的有效時間判斷系統(tǒng)當(dāng)前時間是否超時,是則拒絕交易,否則組織交易信息。
例如,組織支付請求的時間是2016年1月1日8:00,支付請求信息的有效時間是20分鐘,如果當(dāng)前系統(tǒng)時間為2016年1月1日8:20之后則已經(jīng)超時,如果當(dāng)前系統(tǒng)時間為2016年1月1日10:20之前則未超時。
在步驟15中,當(dāng)支付請求包中網(wǎng)絡(luò)類型為“main”時,數(shù)字貨幣錢包將交易信息廣播到數(shù)字貨幣網(wǎng)絡(luò);當(dāng)支付請求包中網(wǎng)絡(luò)類型為“test”(測試網(wǎng))時,數(shù)字貨幣錢包將交易信息廣播到數(shù)字貨幣網(wǎng)絡(luò)的測試網(wǎng)絡(luò)和/或數(shù)字貨幣網(wǎng)絡(luò)。
具體地,步驟15中,數(shù)字貨幣錢包獲取具有與支付包中交易金額等額貨幣值的交易數(shù)據(jù)、與交易數(shù)據(jù)對應(yīng)的交易標(biāo)識、與交易數(shù)據(jù)對應(yīng)的自身保存的數(shù)字貨幣私鑰,具體為:數(shù)字貨幣錢包找到具有大于或等于交易金額貨幣值的數(shù)字貨幣公鑰地址,獲取數(shù)字貨幣公鑰地址對應(yīng)的具有與交易金額等額貨幣值的交易標(biāo)識,根據(jù)交易標(biāo)識找到交易數(shù)據(jù),并根據(jù)數(shù)字貨幣公鑰地址找到對應(yīng)的數(shù)字貨幣公鑰,根據(jù)數(shù)字貨幣公鑰找到自身保存的數(shù)字貨幣私鑰。
本實施例中,數(shù)字貨幣錢包中具有一個或多個數(shù)字貨幣公鑰地址,每個數(shù)字貨幣公鑰地址中具有一定額度的數(shù)字貨幣。每個數(shù)字貨幣公鑰地址對應(yīng)有一個或多個交易標(biāo)識,每個交易標(biāo)識與一筆交易數(shù)據(jù)對應(yīng),每筆交易數(shù)據(jù)中具有一定額度的數(shù)字貨幣。
上述數(shù)字貨幣錢包找到具有大于或等于交易金額貨幣值的數(shù)字貨幣公鑰地址,具體為:數(shù)字貨幣錢包選擇一個數(shù)字貨幣額度大于或等于交易金額額度的數(shù)字貨幣公鑰地址;或者選擇多個數(shù)字貨幣公鑰地址,多個數(shù)字貨幣公鑰地址的數(shù)字貨幣值之和大于或等于交易金額。
上述數(shù)字貨幣錢包獲取數(shù)字貨幣公鑰地址對應(yīng)的具有與交易金額等額貨幣值的交易標(biāo)識,根據(jù)交易標(biāo)識找到交易數(shù)據(jù)具體為:當(dāng)數(shù)字貨幣錢包獲取的一個或多個交易標(biāo)識所對應(yīng)的交易數(shù)據(jù)中的數(shù)字貨幣值等于交易金額時,數(shù)字貨幣錢包找到一個或多個交易標(biāo)識所對應(yīng)的交易數(shù)據(jù);當(dāng)數(shù)字貨幣錢包獲取的一個或多個交易標(biāo)識所對應(yīng)的交易數(shù)據(jù)中的數(shù)字貨幣值大于交易金額時,數(shù)字貨幣錢包找到一個或多個交易標(biāo)識所對應(yīng)的交易數(shù)據(jù),并根據(jù)一個或多個交易標(biāo)識所對應(yīng)的交易數(shù)據(jù)中的數(shù)字貨幣和交易金額計算找零數(shù)字貨幣,獲取找零數(shù)字貨幣公鑰地址,將找零數(shù)字貨幣填到找零數(shù)字貨幣公鑰地址中。
相應(yīng)地,步驟15中數(shù)字貨幣錢包使用數(shù)字貨幣私鑰對交易數(shù)據(jù)和電商公鑰地址進(jìn)行簽名,得到簽名結(jié)果,具體為:
當(dāng)數(shù)字貨幣錢包獲取的一個或多個交易標(biāo)識所對應(yīng)的交易數(shù)據(jù)中的數(shù)字貨幣值等于交易金額時,數(shù)字貨幣錢包使用與數(shù)字貨幣公鑰對應(yīng)的數(shù)字貨幣私鑰對找到的一個或多個交易標(biāo)識所對應(yīng)的交易數(shù)據(jù)、電商公鑰地址進(jìn)行簽名,得到簽名結(jié)果;如果有多個數(shù)字貨幣公鑰地址時,對應(yīng)有多個數(shù)字貨幣公鑰,則需要使用對應(yīng)的數(shù)字貨幣私鑰對對應(yīng)的交易數(shù)據(jù)、電商公鑰地址進(jìn)行簽名,例如,當(dāng)數(shù)字貨幣錢包獲取數(shù)字貨幣公鑰地址1和數(shù)字貨幣公鑰地址2時,獲取的與數(shù)字貨幣公鑰地址1對應(yīng)的交易標(biāo)識包括交易標(biāo)識11和交易標(biāo)識12,獲取的與數(shù)字貨幣公鑰地址2對應(yīng)的交易標(biāo)識為交易標(biāo)識2,則數(shù)字貨幣錢包需要使用與數(shù)字貨幣公鑰地址1對應(yīng)的數(shù)字貨幣私鑰1對交易數(shù)據(jù)11(與交易標(biāo)識11對應(yīng)的交易數(shù)據(jù))、交易數(shù)據(jù)12(與交易標(biāo)識12對應(yīng)的交易數(shù)據(jù))、電商地址進(jìn)行簽名得到簽名結(jié)果1,使用與數(shù)字貨幣公鑰地址2對應(yīng)的數(shù)字貨幣私鑰2對交易數(shù)據(jù)2(與交易標(biāo)識2對應(yīng)的交易數(shù)據(jù))、電商地址進(jìn)行簽名得到簽名結(jié)果2。
當(dāng)數(shù)字貨幣錢包獲取的一個或多個交易標(biāo)識所對應(yīng)的交易數(shù)據(jù)中的數(shù)字貨幣值大于交易金額時,數(shù)字貨幣錢包使用數(shù)字貨幣私鑰對找到的一個或多個交易標(biāo)識所對應(yīng)的交易數(shù)據(jù)、填充有找零數(shù)字貨幣的找零數(shù)字貨幣公鑰地址、電商公鑰地址進(jìn)行簽名,得到簽名結(jié)果。
本實施例中,上述數(shù)字貨幣錢包獲取找零數(shù)字貨幣公鑰地址,具體為:數(shù)字貨幣錢包獲取自身保存的可用于收款的數(shù)字貨幣公鑰地址,將獲取的可用于收款的數(shù)字貨幣公鑰地址作為找零數(shù)字貨幣公鑰地址;或者數(shù)字貨幣錢包生成找零數(shù)字貨幣公鑰地址。
具體地,數(shù)字貨幣錢包生成找零數(shù)字貨幣公鑰地址,具體為:數(shù)字貨幣錢包生成找零數(shù)字貨幣密鑰對,根據(jù)找零數(shù)字貨幣密鑰對中的找零數(shù)字貨幣公鑰生成找零數(shù)字貨幣公鑰地址。找零數(shù)字貨幣密鑰對包括找零數(shù)字貨幣私鑰和找零數(shù)字貨幣公鑰,找零數(shù)字貨幣公鑰、找零數(shù)字貨幣私鑰和找零數(shù)字貨幣公鑰地址是一一對應(yīng)關(guān)系。
進(jìn)一步具體地,上述步驟15中數(shù)字貨幣錢包使用數(shù)字貨幣私鑰對交易數(shù)據(jù)和電商公鑰地址進(jìn)行簽名,得到簽名結(jié)果,具體為:數(shù)字貨幣錢包對交易數(shù)據(jù)和電商公鑰地址根據(jù)預(yù)設(shè)算法進(jìn)行運算,得到第三運算結(jié)果,使用數(shù)字貨幣私鑰對第三運算結(jié)果進(jìn)行簽名得到簽名值,簽名結(jié)果中包括第三運算結(jié)果和簽名值;
或者,數(shù)字貨幣錢包數(shù)字貨幣錢包對交易數(shù)據(jù)、填充有找零數(shù)字貨幣的找零數(shù)字貨幣公鑰地址、電商公鑰地址根據(jù)預(yù)設(shè)算法進(jìn)行運算,得到第三運算結(jié)果,使用數(shù)字貨幣私鑰對第三運算結(jié)果進(jìn)行簽名得到簽名值,簽名結(jié)果中包括第三運算結(jié)果和簽名值。本實施例中,預(yù)設(shè)算法為預(yù)設(shè)的哈希算法。
可選地,本實施例中,上述第三運算結(jié)果可以作為本次交易的交易標(biāo)識,電商服務(wù)器需要花費這筆交易的數(shù)字貨幣時,可以根據(jù)電商公鑰地址找到本次交易的交易標(biāo)識。
步驟16:電商服務(wù)器對支付包中的簽名結(jié)果進(jìn)行驗證,驗證通過則執(zhí)行步驟17,驗證未通過則結(jié)束。
步驟16具體為:電商服務(wù)器根據(jù)交易信息中的交易標(biāo)識找到交易數(shù)據(jù),對交易數(shù)據(jù)和電商公鑰地址根據(jù)預(yù)設(shè)算法進(jìn)行運算生成第四運算結(jié)果;使用交易信息中的數(shù)字貨幣公鑰對簽名值進(jìn)行驗簽得到驗簽數(shù)據(jù),判斷驗簽數(shù)據(jù)是否與第四運算結(jié)果相等,是則驗證通過,否則驗證未通過。
步驟16中的交易信息中包括多個交易標(biāo)識時,每個交易標(biāo)識對應(yīng)有一個交易數(shù)據(jù)、一個數(shù)字貨幣公鑰,根據(jù)多個交易標(biāo)識找到多個交易數(shù)據(jù),則使用與交易標(biāo)識對應(yīng)數(shù)字貨幣公鑰對交易數(shù)據(jù)進(jìn)行驗簽。
當(dāng)多個交易標(biāo)識對應(yīng)的數(shù)字貨幣公鑰為同一個數(shù)字貨幣公鑰時,則簽名結(jié)果中包括一個簽名值,上述電商服務(wù)器對交易數(shù)據(jù)和電商公鑰地址根據(jù)預(yù)設(shè)算法進(jìn)行運算生成第四運算結(jié)果,使用交易信息中的數(shù)字貨幣公鑰對簽名值進(jìn)行驗簽得到驗簽數(shù)據(jù),具體為:電商服務(wù)器對多個交易標(biāo)識對應(yīng)的多筆交易數(shù)據(jù)和電商公鑰地址根據(jù)預(yù)設(shè)算法進(jìn)行運算生成第四運算結(jié)果,使用交易信息中的數(shù)字貨幣公鑰對簽名值進(jìn)行驗簽得到驗簽數(shù)據(jù)。
當(dāng)多個交易標(biāo)識對應(yīng)的數(shù)字貨幣公鑰為不同的數(shù)字貨幣公鑰時,則簽名結(jié)果中包括與數(shù)字貨幣公鑰對應(yīng)的簽名值,上述電商服務(wù)器對交易數(shù)據(jù)和電商公鑰地址根據(jù)預(yù)設(shè)算法進(jìn)行運算生成第四運算結(jié)果,使用交易信息中的數(shù)字貨幣公鑰對簽名值進(jìn)行驗簽得到驗簽數(shù)據(jù),具體為:電商服務(wù)器對與交易信息中與每個數(shù)字貨幣公鑰對應(yīng)的一個或多個交易標(biāo)識所對應(yīng)的一筆或多筆交易數(shù)據(jù)和電商公鑰地址根據(jù)預(yù)設(shè)算法進(jìn)行運算生成多個與數(shù)字貨幣公鑰對應(yīng)的第四運算結(jié)果,并使用交易信息中對應(yīng)的數(shù)字貨幣公鑰對與數(shù)字貨幣公鑰對應(yīng)的簽名值進(jìn)行驗簽得到驗簽數(shù)據(jù)。
例如,數(shù)字貨幣公鑰1對應(yīng)的交易標(biāo)識為交易標(biāo)識1和交易標(biāo)識2,數(shù)字貨幣公鑰2對應(yīng)的交易標(biāo)識為交易標(biāo)識3,則電商服務(wù)器對交易數(shù)據(jù)和電商公鑰地址根據(jù)預(yù)設(shè)算法進(jìn)行運算生成第四運算結(jié)果,使用交易信息中的數(shù)字貨幣公鑰對簽名值進(jìn)行驗簽得到驗簽數(shù)據(jù),具體為:電商服務(wù)器對交易數(shù)據(jù)1(與交易標(biāo)識1對應(yīng)的交易數(shù)據(jù))、交易數(shù)據(jù)2(與交易標(biāo)識2對應(yīng)的交易數(shù)據(jù))和電商公鑰地址根據(jù)預(yù)設(shè)算法進(jìn)行運算生成第四運算結(jié)果1,電商服務(wù)器對交易數(shù)據(jù)3(與交易標(biāo)識3對應(yīng)的交易數(shù)據(jù))和電商公鑰地址根據(jù)預(yù)設(shè)算法進(jìn)行運算生成第四運算結(jié)果2,使用交易信息中的數(shù)字貨幣公鑰1對簽名值1(與數(shù)字貨幣公鑰1對應(yīng)的簽名值)進(jìn)行驗簽得到驗簽數(shù)據(jù)1,使用交易信息中的數(shù)字貨幣公鑰2對簽名值2(與數(shù)字貨幣公鑰2對應(yīng)的簽名值)進(jìn)行驗簽得到驗簽數(shù)據(jù)2,判斷驗簽數(shù)據(jù)1是否與第四運算結(jié)果1相等,并且判斷驗簽數(shù)據(jù)2是否與第四運算結(jié)果2相等,均為是則驗證通過,否則驗證未通過。
本實施例中,電商服務(wù)器根據(jù)對支付包中簽名結(jié)果的驗證可以很快確認(rèn)交易是成功或失敗,提高了電子交易的效率。當(dāng)交易成功時,電商用戶可以從電商服務(wù)器中查找到驗證通過的信息,直接發(fā)貨,無需等待預(yù)設(shè)時間從數(shù)字貨幣網(wǎng)絡(luò)查找預(yù)設(shè)次數(shù)的對交易信息的驗證通過信息。
可選地,本實施例中,步驟16中驗證通過時,電商服務(wù)器顯示驗證通過的信息;驗證未通過時,電商服務(wù)器顯示驗證未通過信息,并結(jié)束交易。
當(dāng)電商服務(wù)器驗證簽名結(jié)果通過時,在執(zhí)行步驟17之前,電商服務(wù)器跳轉(zhuǎn)頁面,不需要用戶繼續(xù)等待數(shù)字貨幣網(wǎng)絡(luò)對交易信息確認(rèn)通過之后才跳轉(zhuǎn)頁面,操作方便。并且當(dāng)電商服務(wù)器驗證通過時,電商可以直接發(fā)貨,不用等待預(yù)設(shè)時間之后數(shù)字貨幣網(wǎng)絡(luò)對交易信息確認(rèn)之后再發(fā)貨,有效提高電子交易的效率。
當(dāng)電商服務(wù)器驗證簽名結(jié)果未通過時,直接結(jié)束交易,并且可以顯示結(jié)束交易的信息,用戶無需等待數(shù)字貨幣網(wǎng)絡(luò)在預(yù)設(shè)時間內(nèi)確認(rèn)交易信息的結(jié)果為失敗才結(jié)束交易,從而可以盡快知曉交易結(jié)果,提高交易效率,為用戶節(jié)省時間。
可選地,步驟16之前還包括:電商服務(wù)器判斷支付包的大小是否超過預(yù)設(shè)范圍,是則結(jié)束交易,否則執(zhí)行步驟16。
可選地,步驟16之后、步驟17之前還包括:電商服務(wù)器判斷支付包的大小是否超過預(yù)設(shè)范圍,是則結(jié)束交易,否則執(zhí)行步驟17。
例如,當(dāng)電商服務(wù)器判斷支付包的大小超過50000字節(jié)時,則電商服務(wù)器結(jié)束交易。
支付包超過50000字節(jié)時,電商服務(wù)器拒絕接收,從而有效防止接收惡意數(shù)據(jù)包,避免因接收惡意數(shù)據(jù)而導(dǎo)致的系統(tǒng)崩潰。
可選地,步驟16之后、步驟17之前還包括:電商服務(wù)器判斷支付包的格式是否正確,是則執(zhí)行步驟17,否則結(jié)束交易。
可選地,步驟16之前還包括:電商服務(wù)器判斷支付包的格式是否正確,是則執(zhí)行步驟16,否則結(jié)束。
步驟17:電商服務(wù)器從支付包中獲取交易標(biāo)識,根據(jù)交易標(biāo)識從數(shù)字貨幣網(wǎng)絡(luò)中找到交易信息,判斷在預(yù)設(shè)時間內(nèi)是否從數(shù)字貨幣網(wǎng)絡(luò)中查找到大于或等于預(yù)設(shè)次數(shù)的對交易信息的驗證通過信息,是則完成交易,否則結(jié)束交易。例如,預(yù)設(shè)時間為1小時,預(yù)設(shè)次數(shù)為6次。
具體地,電商服務(wù)器判斷在預(yù)設(shè)時間內(nèi)是否從數(shù)字貨幣網(wǎng)絡(luò)中查找到大于或等于預(yù)設(shè)次數(shù)的對交易信息的驗證通過信息,具體為:電商服務(wù)器判斷在預(yù)設(shè)時間內(nèi)是否從數(shù)字貨幣網(wǎng)絡(luò)的區(qū)塊鏈數(shù)據(jù)中查找到大于或等于預(yù)設(shè)次數(shù)的與交易信息對應(yīng)的交易記錄,是則完成交易,否則結(jié)束交易;數(shù)字貨幣網(wǎng)絡(luò)每次對交易信息驗證通過之后都將交易信息記錄在區(qū)塊鏈數(shù)據(jù)中。
優(yōu)選地,本實施例中,當(dāng)交易信息中包括多筆交易數(shù)據(jù)時,電商服務(wù)器根據(jù)每一個交易標(biāo)識從數(shù)字貨幣網(wǎng)絡(luò)中查找到對應(yīng)交易數(shù)據(jù),均在預(yù)設(shè)時間內(nèi)從數(shù)字貨幣網(wǎng)絡(luò)中查找到大于或等于預(yù)設(shè)次數(shù)的驗證通過信息,才完成交易。
可選地,步驟16之后、完成交易之前還包括:
步驟18:電商服務(wù)器從數(shù)字貨幣網(wǎng)絡(luò)中獲取交易狀態(tài),根據(jù)交易狀態(tài)生成支付狀態(tài),根據(jù)支付包進(jìn)行拷貝得到支付包的拷貝信息,根據(jù)支付包的拷貝信息和支付狀態(tài)組織支付應(yīng)答包,并將支付應(yīng)答包發(fā)送給數(shù)字貨幣錢包。具體地,支付狀態(tài)為完成交易或正在驗證。
步驟19:數(shù)字貨幣錢包判斷支付應(yīng)答包是否符合要求,是則執(zhí)行步驟20;否則拒絕接收支付應(yīng)答包,結(jié)束交易。
具體地,數(shù)字貨幣錢包判斷支付應(yīng)答包的大小是否符合要求,是則執(zhí)行步驟20,否則拒絕接收支付應(yīng)答包。例如,數(shù)字貨幣錢包判斷支付應(yīng)答包的大小是否大于或等于60000字節(jié),是則拒絕接收支付應(yīng)答包,結(jié)束交易;否則執(zhí)行步驟20。
支付應(yīng)答包超過60000字節(jié)時,數(shù)字貨幣錢包拒絕接收,從而有效防止接收惡意數(shù)據(jù)包,避免因接收惡意數(shù)據(jù)而導(dǎo)致的系統(tǒng)崩潰。
步驟20:數(shù)字貨幣錢包根據(jù)支付應(yīng)答包中的支付狀態(tài)顯示支付狀態(tài)的信息。
例如,支付應(yīng)答包中的支付狀態(tài)為“正在驗證”,數(shù)字貨幣錢包顯示“正在驗證”的支付狀態(tài)的信息。
可選地,本實施例上述步驟12中,還包括:電商服務(wù)器生成電商標(biāo)識,支付請求信息中還包括電商標(biāo)識。每次交易生成的電商標(biāo)識都不同。
相應(yīng)地,上述步驟15中,還包括:數(shù)字貨幣錢包從支付請求包的支付請求信息中獲取電商標(biāo)識,組織的支付包中還包括電商標(biāo)識;
上述步驟15之后、上述步驟16之前,還包括:電商服務(wù)器判斷是否保存有與支付包中的電商標(biāo)識對應(yīng)的電商標(biāo)識,是則執(zhí)行步驟16,否則結(jié)束。
例如,電商服務(wù)器接收的支付包中電商標(biāo)識為1,判斷自身保存的電商標(biāo)識包括1時,執(zhí)行步驟16,否則結(jié)束。
可選地,上述步驟15中,數(shù)字貨幣錢包組織的支付包中還包括退款地址;
相應(yīng)地,上述步驟15中,數(shù)字貨幣錢包根據(jù)交易信息組織支付包,具體為:數(shù)字貨幣錢包根據(jù)退款地址和交易信息組織支付包。
進(jìn)一步地,上述數(shù)字貨幣錢包根據(jù)退款地址和交易信息組織支付包之前,還包括:數(shù)字貨幣錢包生成退款地址。
具體地,數(shù)字貨幣錢包生成退款地址,具體為:數(shù)字貨幣錢包生成退款數(shù)字貨幣密鑰對,根據(jù)退款數(shù)字貨幣密鑰對中的退款數(shù)字貨幣公鑰生成退款數(shù)字貨幣公鑰地址,將退款數(shù)字貨幣公鑰地址作為退款地址。
數(shù)字貨幣錢包生成退款地址,發(fā)送給電商服務(wù)器的支付包中包括退款地址,當(dāng)因為某些原因電商服務(wù)器需要給消費者退款時,電商不用很繁瑣的聯(lián)系消費者獲取退款地址,提高了退款效率。
本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:數(shù)字貨幣錢包從支付請求信息中獲取電商證書,使用電商證書對支付請包中的簽名信息進(jìn)行驗證,驗證通過時才組織交易信息,驗證未通過則拒絕交易,從而提供了安全的支付證明,可以防止支付請求信息中的電商公鑰地址在傳給付款方時被惡意的中間人篡改,保證電商公鑰地址不被中間人劫持和偽造,同時當(dāng)交易雙方產(chǎn)生糾紛時,簽名信息可以當(dāng)做支付證明防止對方耍賴;電商服務(wù)器接收到支付包時,對支付包中的簽名結(jié)果進(jìn)行驗證,電商服務(wù)器根據(jù)驗證結(jié)果就知道交易結(jié)果為成功或失敗,不用等待預(yù)設(shè)時間后根據(jù)從數(shù)字貨幣網(wǎng)絡(luò)中查找到的對交易信息的驗證通過信息的次數(shù)確認(rèn)交易是成功還是失敗,從而有效提高了數(shù)字貨幣電子交易的效率。
本發(fā)明的有益效果還包括:電商服務(wù)器和數(shù)字貨幣錢包之間的信息傳輸不再是一串不可靠的支付地址,而是數(shù)字貨幣錢包生成的數(shù)字貨幣錢包和電商服務(wù)器可以識別的傳輸?shù)刂罚WC在信息傳遞過程中不會外泄;數(shù)字貨幣錢包發(fā)送給電商服務(wù)器的支付包中包括退款地址,當(dāng)因為某些原因電商服務(wù)器需要給消費者退款時,電商不用很繁瑣的聯(lián)系消費者獲取退款地址,提高了退款效率。
實施例3
本發(fā)明提供一種基于數(shù)字貨幣的電子交易的系統(tǒng),如圖3所示,包括數(shù)字貨幣錢包1和電商服務(wù)器2;
其中,數(shù)字貨幣錢包1包括:
保存模塊101,用于保存數(shù)字貨幣私鑰;
第一接收模塊102,用于接收來自電商服務(wù)器2的支付請求包,支付請求包中包括支付請求信息和電商服務(wù)器2使用自身保存的私鑰對支付請求信息的簽名信息,支付請求信息中包括電商證書、交易金額和電商公鑰地址;
第一獲取模塊103,用于從第一接收模塊102接收的支付請求包的支付請求信息中獲取電商證書和簽名信息;
第一驗證模塊104,用于使用第一獲取模塊103獲取的電商證書對第一獲取模塊103獲取的簽名信息進(jìn)行驗證;
交易拒絕模塊105,用于當(dāng)?shù)谝或炞C模塊104對簽名信息驗證未通過時,拒絕交易;
第二獲取模塊106,用于當(dāng)?shù)谝或炞C模塊104對簽名信息驗證通過時,獲取具有與第一接收模塊102接收的支付請求包中的交易金額等額貨幣值的交易數(shù)據(jù)、與交易數(shù)據(jù)對應(yīng)的交易標(biāo)識以及與交易數(shù)據(jù)對應(yīng)的保存模塊101保存的數(shù)字貨幣私鑰;
第三獲取模塊107,用于當(dāng)?shù)谝或炞C模塊104對簽名信息驗證通過時,從第一接收模塊102接收的支付請求包的支付請求信息中獲取電商公鑰地址;
第一簽名模塊108,用于使用第二獲取模塊106獲取的數(shù)字貨幣私鑰對第二獲取模塊106獲取的交易數(shù)據(jù)和第三獲取模塊107獲取的電商公鑰地址進(jìn)行簽名,得到簽名結(jié)果;
第一組織模塊109,用于根據(jù)第一簽名模塊108得到的簽名結(jié)果、第二獲取模塊106獲取的交易標(biāo)識和與第二獲取模塊106獲取的數(shù)字貨幣私鑰對應(yīng)的數(shù)字貨幣公鑰組織交易信息;
第二組織模塊110,用于根據(jù)第一組織模塊109組織的交易信息組織支付包;
廣播模塊111,用于將第一組織模塊109組織的交易信息廣播到數(shù)字貨幣網(wǎng)絡(luò);
第一發(fā)送模塊112,用于將第二組織模塊110組織的支付包發(fā)送給電商服務(wù)器2;
電商服務(wù)器2包括:
第二接收模塊201,用于接收來自數(shù)字貨幣錢包1的支付包;
第二驗證模塊202,用于使用第二接收模塊201接收的支付包中的數(shù)字貨幣公鑰對第二接收模塊201接收的支付包中的簽名結(jié)果進(jìn)行驗證;
第四獲取模塊203,用于當(dāng)?shù)诙炞C模塊202的驗證結(jié)果為驗證通過時,從第二接收模塊201接收的支付包中獲取交易標(biāo)識,根據(jù)交易標(biāo)識從數(shù)字貨幣網(wǎng)絡(luò)中找到交易信息;
判斷模塊204,用于判斷在預(yù)設(shè)時間內(nèi)是否從數(shù)字貨幣網(wǎng)絡(luò)中查找到大于或等于預(yù)設(shè)次數(shù)的對第四獲取模塊203找到的交易信息的驗證通過信息;
完成交易模塊205,用于當(dāng)判斷模塊204判斷結(jié)果為是時,完成交易;
交易結(jié)束模塊206,用于當(dāng)?shù)诙炞C模塊202的驗證結(jié)果為驗證未通過時,結(jié)束交易;用于當(dāng)判斷模塊204判斷結(jié)果為否時,結(jié)束交易。
可選地,本實施例上述系統(tǒng)中的數(shù)字貨幣錢包1還包括第三驗證模塊,用于從第一接收模塊102接收的支付包的支付請求信息中獲取電商證書的證書鏈信息,使用電商證書的證書鏈信息驗證第一獲取模塊103獲取的電商證書是否有效;
相應(yīng)地,上述第一接收模塊102接收的支付包的支付請求信息中還包括電商證書的證書鏈信息;
上述第一驗證模塊104,具體用于當(dāng)?shù)谌炞C模塊驗證電商證書有效時,使用第一獲取模塊103獲取的電商證書對第一獲取模塊103獲取的簽名信息進(jìn)行驗證;
上述交易拒絕模塊105,還用于當(dāng)?shù)谌炞C模塊驗證第一獲取模塊103獲取的電商證書無效時,拒絕交易。
可選地,本實施例上述系統(tǒng)中的電商服務(wù)器2還包括:
第三接收模塊,用于接收來自數(shù)字貨幣錢包1的交易請求,獲取與交易請求對應(yīng)的交易金額;
第一存儲模塊,用于保存電商證書和私鑰;
第二存儲模塊,用于保存電商公鑰地址;
第三組織模塊,用于根據(jù)第三接收模塊獲取的交易金額、第二存儲模塊保存的電商公鑰地址和第一存儲模塊保存的電商證書組織支付請求信息;
第二簽名模塊,用于使用第一存儲模塊保存的私鑰對第三組織模塊組織的支付請求信息進(jìn)行簽名,生成簽名信息;
第四組織模塊,用于根據(jù)第二簽名模塊生成的簽名信息和第三組織模塊組織的支付請求信息組織支付請求包;
第二發(fā)送模塊,用于將第四組織模塊組織的支付請求包發(fā)送給數(shù)字貨幣錢包1。
具體地,上述第二簽名模塊,具體用于對第三組織模塊組織的支付請求信息根據(jù)預(yù)設(shè)算法進(jìn)行運算得到第一運算結(jié)果,使用第一存儲模塊保存的私鑰對第一運算結(jié)果進(jìn)行簽名,生成第一簽名值;簽名信息中包括第一運算結(jié)果和第一簽名值;
相應(yīng)地,上述第一獲取模塊103獲取的簽名信息中包括第一運算結(jié)果和第一簽名值;
上述第一驗證模塊104,具體用于使用第一獲取模塊103獲取的電商證書中的公鑰對第一獲取模塊103獲取的第一簽名值進(jìn)行解密得到解密數(shù)據(jù),對第一接收模塊102接收的支付包中的支付請求信息根據(jù)預(yù)設(shè)算法進(jìn)行運算得到第二運算結(jié)果,判斷解密數(shù)據(jù)是否與第二運算結(jié)果相同,是則驗證通過,否則驗證未通過。
具體地,上述第三組織模塊,具體用于將第三接收模塊獲取的交易金額和第二存儲模塊保存的電商公鑰地址填到電商的輸出列表中,根據(jù)電商的輸出列表和第一存儲模塊保存的電商證書組織支付請求信息;
相應(yīng)地,上述第一接收模塊102接收的支付包中的交易金額和電商公鑰地址具體為包括交易金額和電商公鑰地址的電商的輸出列表。
進(jìn)一步地,上述電商服務(wù)器2在包括第三接收模塊、第一存儲模塊、第二存儲模塊、第三組織模塊、第二簽名模塊、第四組織模塊和第二發(fā)送模塊的基礎(chǔ)上還包括:
第一生成模塊,用于生成電商公鑰地址;
相應(yīng)地,上述第二存儲模塊,具體用于保存第一生成模塊生成的電商公鑰地址。
進(jìn)一步地,上述電商服務(wù)器2在包括第三接收模塊、第一存儲模塊、第二存儲模塊、第三組織模塊、第二簽名模塊、第四組織模塊和第二發(fā)送模塊的基礎(chǔ)上還包括:
第二生成模塊,用于生成傳輸?shù)刂罚?/p>
相應(yīng)地,上述第三組織模塊組織的支付請求信息中還包括第二生成模塊生成的傳輸?shù)刂罚?/p>
上述第二發(fā)送模塊,具體用于通過第二生成模塊生成的傳輸?shù)刂穼⒌谒慕M織模塊組織的支付請求包發(fā)送給數(shù)字貨幣錢包1;
上述第一發(fā)送模塊112,具體用于從第一接收模塊102接收的支付請求包中獲取傳輸?shù)刂?,通過傳輸?shù)刂穼⒅Ц栋l(fā)送給電商服務(wù)器2。
具體地,上述第二生成模塊生成的傳輸?shù)刂肪唧w為基于SSL加密的傳輸?shù)刂贰?/p>
可選地,本實施例上述系統(tǒng)中的數(shù)字貨幣錢包1還包括第三存儲模塊,用于保存退款地址;
相應(yīng)地,上述第二組織模塊110,具體用于根據(jù)第三存儲模塊保存的退款地址和第一組織模塊109組織的交易信息組織支付包。
進(jìn)一步地,上述數(shù)字貨幣錢包1在包括第三存儲模塊的基礎(chǔ)上還包括:
第三生成模塊,用于生成退款地址;
相應(yīng)地,上述第三存儲模塊,具體用于保存第三生成模塊生成的退款地址。
可選地,本實施例上述系統(tǒng)中,第一接收模塊102接收的支付請求包中的支付請求信息中還包括電商的電子證書信息;
相應(yīng)地,本實施例上述系統(tǒng)中的數(shù)字貨幣錢包1還包括:
顯示模塊,用于顯示電商的電子證書信息;
信息接收模塊,用于當(dāng)顯示模塊顯示電商的電子證書信息時,接收用戶輸入的確認(rèn)信息,或接收用戶輸入的取消信息,或接收超時信息;
上述交易拒絕模塊105,還用于上述信息接收模塊接收到用戶輸入的取消信息,或者接收到超時信息時,結(jié)束交易;
第二獲取模塊106,具體用于當(dāng)?shù)谝或炞C模塊104對簽名信息的驗證結(jié)果為驗證通過時,并且信息接收模塊接收到用戶輸入的確認(rèn)消息時,獲取具有與交易金額等額貨幣值的交易數(shù)據(jù)、與交易數(shù)據(jù)對應(yīng)的交易標(biāo)識以及與交易數(shù)據(jù)對應(yīng)的保存模塊101保存的數(shù)字貨幣私鑰。
可選地,本實施例上述系統(tǒng)中的第一簽名模塊108,具體用于對第二獲取模塊106獲取的交易數(shù)據(jù)和第三獲取模塊107獲取的電商公鑰地址根據(jù)預(yù)設(shè)算法進(jìn)行運算,得到第三運算結(jié)果,使用第二獲取模塊106獲取的數(shù)字貨幣私鑰對第三運算結(jié)果進(jìn)行簽名得到簽名值,簽名結(jié)果中包括第三運算結(jié)果和簽名值;
相應(yīng)地,上述第二驗證模塊202,具體用于根據(jù)第二接收模塊201接收的支付包中的交易標(biāo)識找到交易數(shù)據(jù),對交易數(shù)據(jù)和第二接收模塊201接收的支付包中的電商公鑰地址根據(jù)預(yù)設(shè)算法進(jìn)行運算生成第四運算結(jié)果;使用第二接收模塊201接收的支付包中的交易信息中的數(shù)字貨幣公鑰對簽名值進(jìn)行驗簽得到驗簽數(shù)據(jù),判斷驗簽數(shù)據(jù)是否與第四運算結(jié)果相等,是則驗證通過,否則驗證未通過。
可選地,本實施例上述系統(tǒng)中的第二獲取模塊106,具體用于當(dāng)?shù)谝或炞C模塊104對簽名信息驗證通過時,找到具有大于或等于第一接收模塊102接收的支付請求包中的交易金額貨幣值的數(shù)字貨幣公鑰地址,獲取數(shù)字貨幣公鑰地址對應(yīng)的具有與交易金額等額貨幣值的交易標(biāo)識,根據(jù)交易標(biāo)識找到交易數(shù)據(jù),并根據(jù)數(shù)字貨幣公鑰地址找到對應(yīng)的數(shù)字貨幣公鑰,根據(jù)數(shù)字貨幣公鑰找到保存模塊101保存的數(shù)字貨幣私鑰。
可選地,本實施例上述系統(tǒng)中的判斷模塊204,具體用于判斷在預(yù)設(shè)時間內(nèi)是否從數(shù)字貨幣網(wǎng)絡(luò)的區(qū)塊鏈數(shù)據(jù)中查找到大于或等于預(yù)設(shè)次數(shù)的與第四獲取模塊203找到的交易信息對應(yīng)的交易記錄;數(shù)字貨幣網(wǎng)絡(luò)每次對交易信息驗證通過之后都將交易信息記錄在區(qū)塊鏈數(shù)據(jù)中。
本發(fā)明與現(xiàn)有技術(shù)相比的有益效果是:數(shù)字貨幣錢包從支付請求信息中獲取電商證書,使用電商證書對支付請包中的簽名信息進(jìn)行驗證,驗證通過時才組織交易信息,驗證未通過則拒絕交易,從而提供了安全的支付證明,可以防止電商公鑰地址在傳給付款方時被惡意的中間人篡改,保證電商公鑰地址不被中間人劫持和偽造,同時當(dāng)交易雙方產(chǎn)生糾紛時,簽名信息可以當(dāng)做支付證明防止對方耍賴;電商服務(wù)器接收到支付包時,對支付包中的簽名結(jié)果進(jìn)行驗證,電商服務(wù)器根據(jù)驗證結(jié)果就知道交易結(jié)果為成功或失敗,不用等待預(yù)設(shè)時間后根據(jù)從數(shù)字貨幣網(wǎng)絡(luò)中查找到的對交易信息的驗證通過信息的次數(shù)確認(rèn)交易是成功還是失敗,從而有效提高了數(shù)字貨幣電子交易的效率。電商服務(wù)器和數(shù)字貨幣錢包之間的信息傳輸不再是一串不可靠的支付地址,而是數(shù)字貨幣錢包生成的數(shù)字貨幣錢包和電商服務(wù)器可以識別的傳輸?shù)刂罚WC在信息傳遞過程中不會外泄;數(shù)字貨幣錢包發(fā)送給電商服務(wù)器的支付包中包括退款地址,當(dāng)因為某些原因電商服務(wù)器需要給消費者退款時,電商不用很繁瑣的聯(lián)系消費者獲取退款地址,提高了退款效率。
以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。