本發(fā)明屬于計(jì)算機(jī)應(yīng)用軟件領(lǐng)域,更具體地,涉及一種基于區(qū)塊鏈的旅游景區(qū)售票方法和系統(tǒng)。
背景技術(shù):
隨著社會(huì)的發(fā)展和人們精神生活的日益豐富,越來越多的人們選擇旅游這種休閑方式,國內(nèi)的許多知名景區(qū)都是收費(fèi)的,因此需要人們購票方能進(jìn)入旅游景區(qū)游覽參觀。
目前提供給游客購買旅游景區(qū)門票的方式主要有線上購票和線下購票兩種,其中線上購票方式需要游客提前至少一天購買旅游景區(qū)的門票。
現(xiàn)有的線上購買旅游景區(qū)門票的方式存在若干問題:首先,游客必須提前在線購買門票,而不能臨時(shí)購買門票,這給游客帶來諸多不便;其次,線上購票方式主要是基于中心化的數(shù)據(jù)存儲(chǔ)方式,其交易數(shù)據(jù)不透明,不可信,常常會(huì)導(dǎo)致用戶隱私泄露。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種基于區(qū)塊鏈的旅游景區(qū)售票平臺(tái),其目的在于,解決現(xiàn)有在線購買旅游景區(qū)門票方式中存在的及時(shí)性差從而影響用戶體驗(yàn)、以及交易數(shù)據(jù)不透明和不可信導(dǎo)致的用戶隱私容易泄露的技術(shù)問題。
為實(shí)現(xiàn)上述目的,按照本發(fā)明的一個(gè)方面,提供了一種基于區(qū)塊鏈的旅游景區(qū)售票方法,包括以下步驟:
(1)客戶端判斷其密鑰中的私鑰是否存在于客戶端本地中,如果是則轉(zhuǎn)入步驟(2),否則轉(zhuǎn)入步驟(8);
(2)客戶端使用其私鑰加密其支付地址,并將其密鑰中的公鑰、加密后的支付地址發(fā)送到售票服務(wù)器,售票服務(wù)器根據(jù)接收到的公鑰和客戶端的支付地址驗(yàn)證該客戶端是否為合法客戶端,如果是合法客戶端則轉(zhuǎn)入步驟(3),如果不是合法客戶端,則過程結(jié)束;
(3)售票服務(wù)器根據(jù)接收到的公鑰并使用區(qū)塊鏈中的智能合約判斷該客戶端的角色是否是游客,如果是游客,則轉(zhuǎn)入步驟(4),否則過程結(jié)束;
(4)客戶端在到達(dá)旅游景區(qū)后向售票服務(wù)器發(fā)送購票請(qǐng)求,并向售票服務(wù)器支付旅游景區(qū)門票價(jià)格的現(xiàn)金,該購票請(qǐng)求中包括支付地址;
(5)售票服務(wù)器利用其智能合約驗(yàn)證客戶端的購票請(qǐng)求中是否包括購票標(biāo)識(shí)符,如果包括則將旅游景區(qū)門票價(jià)格對(duì)應(yīng)的虛擬幣轉(zhuǎn)到用戶的支付地址,然后轉(zhuǎn)入步驟(6),否則過程結(jié)束;
(6)售票服務(wù)器根據(jù)客戶端的支付地址和客戶端發(fā)送購票請(qǐng)求的時(shí)間生成門票二維碼,并將該門票二維碼存儲(chǔ)在區(qū)塊鏈中;
(7)支付端根據(jù)其支付地址在售票服務(wù)器的區(qū)塊鏈中獲取門票二維碼,并在預(yù)定時(shí)間內(nèi)使用該門票二維碼進(jìn)入旅游景區(qū),售票服務(wù)器從用戶的支付地址中扣除旅游景區(qū)門票價(jià)格對(duì)應(yīng)的虛擬幣,過程結(jié)束;
(8)客戶端判斷其密鑰是否備份在云端,如果是備份在云端,則直接從云端下載對(duì)應(yīng)的密鑰,并返回步驟(2),否則繼續(xù)嘗試獲取其密鑰,如果獲取到則返回步驟(2),如果沒有獲取到則過程結(jié)束。
優(yōu)選地,支付地址是通過以下過程得到的:客戶端向售票服務(wù)器發(fā)送注冊請(qǐng)求,根據(jù)該注冊請(qǐng)求生成密鑰,根據(jù)該密鑰生成支付地址。
優(yōu)選地,生成支付地址的過程具體為,采用哈希加密算法對(duì)注冊請(qǐng)求進(jìn)行處理以生成私鑰,采用橢圓曲線算法對(duì)私鑰進(jìn)行處理,以生成公鑰,采用復(fù)合哈希加密算法對(duì)生成的公鑰進(jìn)行處理,以生成最終的支付地址,該支付地址是以二維碼方式在客戶端上顯示。
優(yōu)選地,在支付地址生成后,密鑰被哈希加密,然后被備份在云端,或被備份在客戶端。
優(yōu)選地,步驟(2)中驗(yàn)證客戶端合法性的過程具體為,使用接收到的公鑰對(duì)加密后的支付地址進(jìn)行解密操作,并在售票服務(wù)器的區(qū)塊鏈中尋找是否存在解密后的支付地址,如果存在則表示對(duì)應(yīng)的客戶端是合法客戶端,否則表示其為非法客戶端。
按照本發(fā)明的另一方面,提供了一種基于區(qū)塊鏈的旅游景區(qū)售票系統(tǒng),包括:
第一模塊,用于客戶端判斷其密鑰中的私鑰是否存在于客戶端本地中,如果是則轉(zhuǎn)入第二模塊,否則轉(zhuǎn)入第八模塊;
第二模塊,用于客戶端使用其私鑰加密其支付地址,并將其密鑰中的公鑰、加密后的支付地址發(fā)送到售票服務(wù)器,售票服務(wù)器根據(jù)接收到的公鑰和客戶端的支付地址驗(yàn)證該客戶端是否為合法客戶端,如果是合法客戶端則轉(zhuǎn)入步驟第三模塊,如果不是合法客戶端,則過程結(jié)束;
第三模塊,用于售票服務(wù)器根據(jù)接收到的公鑰并使用區(qū)塊鏈中的智能合約判斷該客戶端的角色是否是游客,如果是游客,則轉(zhuǎn)入步驟第四模塊,否則過程結(jié)束;
第四模塊,用于客戶端在到達(dá)旅游景區(qū)后向售票服務(wù)器發(fā)送購票請(qǐng)求,并向售票服務(wù)器支付旅游景區(qū)門票價(jià)格的現(xiàn)金,該購票請(qǐng)求中包括支付地址;
第五模塊,用于售票服務(wù)器利用其智能合約驗(yàn)證客戶端的購票請(qǐng)求中是否包括購票標(biāo)識(shí)符,如果包括則將旅游景區(qū)門票價(jià)格對(duì)應(yīng)的虛擬幣轉(zhuǎn)到用戶的支付地址,然后轉(zhuǎn)入第六模塊,否則過程結(jié)束;
第六模塊,用于售票服務(wù)器根據(jù)客戶端的支付地址和客戶端發(fā)送購票請(qǐng)求的時(shí)間生成門票二維碼,并將該門票二維碼存儲(chǔ)在區(qū)塊鏈中;
第七模塊,用于支付端根據(jù)其支付地址在售票服務(wù)器的區(qū)塊鏈中獲取門票二維碼,并在預(yù)定時(shí)間內(nèi)使用該門票二維碼進(jìn)入旅游景區(qū),售票服務(wù)器從用戶的支付地址中扣除旅游景區(qū)門票價(jià)格對(duì)應(yīng)的虛擬幣,過程結(jié)束;
第八模塊,用于客戶端判斷其密鑰是否備份在云端,如果是備份在云端,則直接從云端下載對(duì)應(yīng)的密鑰,并返回第二模塊,否則繼續(xù)嘗試獲取其密鑰,如果獲取到則返回第二模塊,如果沒有獲取到則過程結(jié)束。
總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,能夠取得下列有益效果:
1、本發(fā)明能夠解決現(xiàn)有方法中存在的即時(shí)性差的技術(shù)問題:由于本發(fā)明采用了步驟(4)至(7),其提供了游客先進(jìn)入景區(qū)后確認(rèn)交易的方式,使得游客可以隨時(shí)購票進(jìn)入景區(qū),而無需提前至少一天在線購票,從而確保了用戶體驗(yàn)的即時(shí)性;
2、本發(fā)明能夠解決現(xiàn)有方法中存在的會(huì)泄露用戶隱私數(shù)據(jù)的技術(shù)問題:由于本發(fā)明的所有交易數(shù)據(jù)均存儲(chǔ)在區(qū)塊鏈上,區(qū)塊鏈?zhǔn)且环N分布式的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),如果要更改區(qū)塊鏈上的數(shù)據(jù),則需要區(qū)塊鏈上的所有節(jié)點(diǎn)進(jìn)行確認(rèn),因此本發(fā)明具有良好的可信度和透明度,從而能保證用戶數(shù)據(jù)的隱私性。
3、本發(fā)明的方法操作簡單,用戶體驗(yàn)性好。
附圖說明
圖1是本發(fā)明基于區(qū)塊鏈的旅游景區(qū)售票方法的流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。
本發(fā)明的總體思路在于,利用區(qū)塊鏈分布式存儲(chǔ)結(jié)構(gòu)保障門票交易數(shù)據(jù)和交易過程的可信和透明;利用區(qū)塊鏈的智能合約進(jìn)行可信的身份認(rèn)證。
如圖1所示,本發(fā)明基于區(qū)塊鏈的旅游景區(qū)售票方法包括以下步驟:
(1)客戶端判斷其密鑰中的私鑰是否存在于客戶端本地中,如果是則轉(zhuǎn)入步驟(2),否則轉(zhuǎn)入步驟(8);
具體而言,如果某個(gè)客戶端丟失,則其私鑰就不會(huì)存在于其本地中。
(2)客戶端使用其私鑰加密其支付地址,并將其密鑰中的公鑰、加密后的支付地址發(fā)送到售票服務(wù)器,售票服務(wù)器根據(jù)接收到的公鑰和客戶端的支付地址驗(yàn)證該客戶端是否為合法客戶端,如果是合法客戶端則轉(zhuǎn)入步驟(3),如果不是合法客戶端,則過程結(jié)束;
具體而言,該注冊請(qǐng)求包括有該客戶端的id號(hào)碼(在本實(shí)施方式中,該客戶端是手機(jī),該客戶端的id號(hào)碼就是該手機(jī)號(hào)碼);
本步驟中驗(yàn)證客戶端合法性的過程具體為,使用接收到的公鑰對(duì)加密后的支付地址進(jìn)行解密操作,并在售票服務(wù)器的區(qū)塊鏈中尋找是否存在解密后的支付地址,如果存在則表示對(duì)應(yīng)的客戶端是合法客戶端,否則表示其為非法客戶端。
支付地址是通過以下過程生成的:首先,客戶端向售票服務(wù)器發(fā)送注冊請(qǐng)求,然后根據(jù)該注冊請(qǐng)求生成密鑰,最后根據(jù)該密鑰生成支付地址。
支付地址的具體生成方法是,首先可采用哈希加密算法(sha-256、base58等)對(duì)注冊請(qǐng)求進(jìn)行處理以生成私鑰,然后采用橢圓曲線算法對(duì)私鑰進(jìn)行處理,以生成公鑰,最后采用復(fù)合哈希加密算法(sha-256和base58)對(duì)生成的公鑰進(jìn)行處理,以生成最終的支付地址,該支付地址是以二維碼方式在客戶端上顯示。
需要注意的是,在支付地址生成后,密鑰被哈希加密,然后被備份在云端,或被備份在客戶端。
(3)售票服務(wù)器根據(jù)接收到的公鑰并使用區(qū)塊鏈中的智能合約判斷該客戶端的角色是否是游客,如果是游客,則轉(zhuǎn)入步驟(4),否則過程結(jié)束;
(4)客戶端在到達(dá)旅游景區(qū)后向售票服務(wù)器發(fā)送購票請(qǐng)求,并向售票服務(wù)器支付旅游景區(qū)門票價(jià)格的現(xiàn)金,該購票請(qǐng)求中包括支付地址;
具體而言,客戶端發(fā)送購票請(qǐng)求的方式可以是旅游景區(qū)的掃描設(shè)備掃描客戶端上以二維碼形式顯示的支付地址。
(5)售票服務(wù)器利用其智能合約驗(yàn)證客戶端的購票請(qǐng)求中是否包括購票標(biāo)識(shí)符,如果包括則將旅游景區(qū)門票價(jià)格對(duì)應(yīng)的虛擬幣轉(zhuǎn)到用戶的支付地址,然后轉(zhuǎn)入步驟(6),否則表示該客戶端并不是通過到達(dá)旅游景區(qū)后現(xiàn)場買票的方式,而是采用的預(yù)先購票方式,本過程結(jié)束;
購票標(biāo)識(shí)符是一個(gè)常量,其可以是任何字符串。
(6)售票服務(wù)器根據(jù)客戶端的支付地址和客戶端發(fā)送購票請(qǐng)求的時(shí)間生成門票二維碼,并將該門票二維碼存儲(chǔ)在區(qū)塊鏈中;
(7)支付端根據(jù)其支付地址在售票服務(wù)器的區(qū)塊鏈中獲取門票二維碼,并在預(yù)定時(shí)間內(nèi)使用該門票二維碼進(jìn)入旅游景區(qū),售票服務(wù)器從用戶的支付地址中扣除旅游景區(qū)門票價(jià)格對(duì)應(yīng)的虛擬幣,過程結(jié)束;
具體而言,預(yù)訂時(shí)間為1周內(nèi),優(yōu)選為1天,若用戶超過預(yù)定時(shí)間使用,則該門票二維碼自動(dòng)作廢。
(8)客戶端判斷其密鑰是否備份在云端,如果是備份在云端,則直接從云端下載對(duì)應(yīng)的密鑰,并返回步驟(2),否則繼續(xù)嘗試獲取其密鑰,如果獲取到則返回步驟(2),如果沒有獲取到則過程結(jié)束。
本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。