為何安全

紀錄分放兩處, 而且兩邊必須一致.

票券就像禮券,誰拿著誰就能用。所以重點是:眼前這一張是不是真的、有沒有被用過。我們把紀錄分放在兩個地方,同一個人無法同時改動兩邊。

bullmark

保存票券本身:誰持有、值多少、是否已使用。

只送出指紋(雜湊值) 絕不送內容

axowl

保存那筆紀錄的指紋,也就是從紀錄算出來的一小段代碼。到達時間由 Axowl 自己的時鐘記下。

Axowl 看不到票券的內容。它只收到指紋,並連同自己記下的時間一起保存。因此兩邊彼此獨立。票券一旦被改動,指紋也會跟著變,而存在 Axowl 的指紋我們改不了。

指紋涵蓋的內容

指紋由這些項目算出

指紋涵蓋的不是資料庫的整列,而是下面這份清單,所以你能清楚知道哪些內容受到保護。改動其中任何一項,指紋就不再吻合。

產品 品牌 誰持有它 它的核銷碼 它的序號 消費者價格 它給出的價格 何時到期 是否已被使用 何時被使用 持有者的電子郵件

最後三項是在 2026 年 8 月加入的 ,也是最重要的三項。在那之前,把資料庫裡一張已使用的票券改回未使用,它仍能通過每一項檢查,因為使用紀錄存在別的地方,指紋不會變。現在已經行不通了。

有兩樣東西是刻意 排除在外 的,因為放進去會造成誤報。 保留 只是暫時鎖住,不會改變票券的價值。一張在櫃台被保留三十秒的票券,並沒有被改動。 過期 狀態也不放進去,因為到期日已經在指紋裡,任何人都能自己算出來。如果連狀態也放進去,一張週一驗證通過的票券,沒有人動過,週二卻會驗證失敗。誤報太多的檢查,大家就不會再看了。

每種攻擊如何被擋下

從內部作弊的四種方式,以及各自如何被擋下

在資料庫裡改一張票券

有人把價格調低、把到期日延後,或填上自己的名字。指紋就會改變,不再與存放在 Axowl 的指紋吻合。重新計算我們這邊的指紋也沒有用,因為用來判定的那一份不在我們的資料庫裡。

把同一張票券用兩次

是否已使用現在也在指紋裡,所以把它改回未使用,指紋就會改變。每一次使用還會另外留下一筆無法更改的紀錄,並與前一筆相連。要造假,兩份紀錄都得一起說謊,而其中一份不是我們的。

憑空做出一張從未發行的票券

發行票券時,整批會被記成一筆無法更改的紀錄:多少張、什麼價格、到哪一天為止。如果發行了 100 張,第 101 張就會和已有的紀錄矛盾。而且新的指紋是由 Axowl 的時鐘標上時間,不是我們的,所以可以在今天建立,但不可能標成去年。

悄悄把它移給別人

持有者也在指紋裡,所以無法靠改一個欄位就讓票券換主人。轉交時,給出方的那一張會被關閉,並以相同序號為接收方另外發行一張。兩個步驟都會留在紀錄裡,所以不會有只留下一邊的轉讓。

被複製的代碼

如果有人複製了我的 QR 呢?

QR 碼(用來掃描的方形條碼)不是票券本身。它只是指向我們紀錄中某一張有編號的票券。所以一張 QR 的照片值多少,正好等於有人出示它的那一刻,那張票券值多少。下面每一種情況都可以這樣理解。

捏造的代碼

使用票券時,系統是拿代碼去查紀錄,而不是從圖片上讀出金額。從未發行過的代碼什麼都查不到,不管它外面的 QR 看起來多像真的。沒有人能靠畫圖變出一張票券。

一份真品的複本

複本的代碼相同,所以是同一張票券,不會多出第二張。第一次使用會記在那張票券上,之後無法更改。之後不論用複本或原件再試,都會得到「已使用」的回覆。截圖十張,票券還是只有一張。

賣掉之前留下的截圖

把票券送人或轉售時,給出方的票券會被關閉,接收方則在同一個序號下拿到一張帶有 新代碼 的票券。舊截圖裡的代碼現在只會連到一張已關閉的票券。先把票券賣掉,再搶在買家之前使用,是行不通的。

被別人先看到的代碼

這個風險是真的,我們選擇直說。誰拿到代碼誰就能用這張票券,而用代碼受理的品牌並不知道拿著手機的是誰。掃描 QR 不會洩漏代碼:掃描只會顯示這張票券是真的、還沒用過,代碼只有已登入的持有者和發行品牌看得到。但你貼出去或唸出來的代碼,別人就能拿去用。請把它當成禮物卡號碼來保管。想把這個缺口也補上的品牌,可以不收手打的代碼,改成向我們查詢 那位已登入的顧客 實際持有哪些票券,讓他從清單中挑選。這樣一來,複製來的代碼就沒有地方可以輸入。

不管是哪一種情況,都會留下紀錄。 發行、轉交、保留與使用各自都會留下一筆無法更改的紀錄,並與前一筆相連。品牌可以取得自家任何一張票券的完整歷程,連內容一起,然後自己重新計算每一個指紋。所以誰在什麼時候用了這張票券,不必靠我們的說法也能查證。

Brand Credit

我們能不能偷偷多發?

Brand Credit 的用法很像錢:品牌儲值、用它發行票券、把賺到的提領成現金。所以該問的不只是外人能不能闖進來,更是 我們 能不能在自己的紀錄上偷偷加一行而不被發現。

紀錄只增不改

紀錄只會新增,不會被編輯或刪除。更正時會新增一筆紀錄,說明它更正了什麼,所以錯誤和修正都看得到。不存在把不好看的那一行拿掉後的餘額。

每一筆紀錄都鎖定並相連

每一筆紀錄都帶著前一筆的指紋。改動一筆舊紀錄,它之後的每一筆都會對不上。所以哪怕只偷改一處,也得在兩個地方把整串紀錄重寫,而其中一個地方不是我們的。

內部人員也不例外

能進入我們的資料庫,不代表能掌控紀錄。對我們正式資料庫擁有完整權限的人,仍然可以改動一列,但他無法讓 Axowl 那邊的指紋事後跟著吻合。這就是為什麼第二份紀錄要放在我們的管理員沒有管理權限的地方。

你可以不問我們就自行稽核

品牌可以把自己紀錄的 id 交給會計師。會計師從公開的紀錄鏈重新計算指紋,並核對總數是否對得上。這項檢查不經過 Bullmark,所以我們沒有插手的餘地。

推薦獎勵

假帳號能不能領走獎勵?

按新用戶人數發獎勵,會讓人想去製造假用戶。所以光是註冊不會發獎勵,只有留下來的人才算。

註冊當下不支付任何東西

首次登入只會留下一筆保留中的紀錄。獎勵在 7 天後支付,而且只有同一個人在另一天再次登入才支付。註冊後不再回來的帳號會以未支付結案。

一個信箱,一次獎勵

寫法不同但寄到同一個收件匣的地址,例如 +標籤或 Gmail 地址裡的點,都算同一個人。拋棄式信箱可以登入,但不會獲得獎勵。

裝置與暴增都有上限

同一裝置在同一品牌最多只有三筆註冊可獲獎勵。寄給新地址的註冊信按網路與 App 限制發送頻率,在那之前還要通過預設開啟的機器人檢查。突然湧入註冊的合約會停止支付,並通知品牌。

品牌最多會損失多少,事先就定好

每一份有獎勵的合約都有預算,保留中的獎勵也算在預算內。推薦人本人和品牌自己的人一律不計。每一筆獎勵,無論支付或拒付,都會留下無法更改的紀錄,品牌和推薦人都看得到。

除此之外,系統還包含多種基於安全考量無法公開的防護機制。

我們不宣稱的事

我們只驗證到電子郵件為止.

我們不檢查護照、不經營身分查核機構,也不聲稱知道一個地址背後是誰。指紋只能證明一筆紀錄沒有被更動,不會讓未經驗證的說法變成真的。把這兩件事混為一談的公司,賣的只是一種安心的感覺。

所以我們確切承諾的是: 這張票券,以這個價格,在這個時間,發給了這個電子郵件地址,而且之後沒有被改動過。 這個電子郵件是帳號登入驗證時用的那一個,不是某人在表單裡填的。超出那個地址以外的事,我們無法證明。與其讓你之後才發現,我們寧可現在就說清楚。

自己去驗證

你不必相信我們的說法

每一筆鎖定的紀錄都可以讀取,計算指紋的方法也是公開的。把這串紀錄交給我們的 JavaScript SDK,或任何能計算 SHA-256(一種標準的指紋算法)的工具,自己重新算一次指紋。這項檢查完全在你這邊執行,不會向 Bullmark 查詢任何東西。

GET /integrity/events/VoucherInstance/{id}

它只回傳指紋與判定結果,絕不回傳票券內容或核銷碼。所以它可以保持公開,而不會變成讀取別人票券的手段。

開始使用

不用先付現金.

刊登你的新創 運作方式

Loading…
an unhandled error has occurred. reload ✕