【问题标题】:How many bitcoins were transferred from one wallet to another?有多少比特币从一个钱包转移到另一个钱包?
【发布时间】:2019-06-13 14:53:27
【问题描述】:

问题很简单:我想查询有多少 BTC 从钱包 A 转移到了钱包 B,其跳数与区块链中的块一样多。

例如

A transferred 1 BTC to C and 1 BTC to D.
C transferred 0.1 to B
D transferred 0.5 to E and 0.5 to F
E transferred 0.1 to B

总共 0.2 BTC 从 A 转移到 B

我想我可以通过在区块链上使用 bigquery 来做到这一点。问题是我不知道如何创建这样的递归查询。我的 SQL 技能趋于零。

事业是崇高的。我的地址很少被用于庞氏骗局 1。我还有其他一组地址被用于另一个骗局,我认为这是另一个骗局 (2) 从骗局 1 洗钱。

我知道骗局 2 的幕后黑手是谁。

如果我证明来自第一个骗局的大量 BTC 流向了与第二个骗局相关的钱包,则可能强烈表明它们是相同的。

请注意,我已经说了很多 BTC。我知道有些 BTC 可能会偶然进入方案 2 的钱包,但对于大多数人来说,这根本不是巧合。

披露:我不会从中获得任何经济利益,我只是打算披露这个骗子。

【问题讨论】:

  • 请以文本表格的形式提供示例数据和所需结果。

标签: sql google-bigquery blockchain bitcoin


【解决方案1】:

由于您没有发布数据结构,因此您的里程可能会有所不同。这是一个假设的(我对比特币数据结构知之甚少)比特币链结构。使用递归 CTE 创建锚点和自调用。我在下面使用 Source 和 target,但是,它们可以与比特币语义交换。

Sql Fiddle

DECLARE @T TABLE(ChainID INT, SourceID INT, TargetID INT, Amount INT)
INSERT @T VALUES
(1,100,300,1),
(2,900,800,1),
(1,100,400,1),
(2,800,700,1),
(1,300,200,1),
(1,400,500,1),
(2,700,600,1),
(1,500,600,1),
(1,500,200,1),
(2,600,500,1),
(2,500,400,1)

 DECLARE @ChainID INT = 2

 --Get the first source of a chain !If natural order, if there is a more suitable order field then use it!
 DECLARE @StartID INT = (SELECT SourceID FROM (SELECT SourceID,RN=ROW_NUMBER() OVER (ORDER BY ChainID) FROM @T WHERE ChainID = @ChainID ) AS X WHERE RN=1)

;WITH RecursiveWalk AS
(   
        --Anchor
    SELECT 
        SourceID, 
        TargetID = T.TargetID,
        LevelID = 1
    FROM 
        @T T
    WHERE 
        T.SourceID = @StartID AND ChainID = @ChainID

    UNION ALL

        --Recursive bit
    SELECT 
        T.SourceID, 
        TargetID = T.TargetID,
        LevelID = LevelID + 1 
    FROM 
        @T T 
        INNER JOIN RecursiveWalk RW ON T.SourceID = RW.TargetID
    WHERE
        ChainID=@ChainID
)

SELECT 
    SourceID,
    TargetID,
    LevelID
FROM 
    RecursiveWalk

【讨论】:

    猜你喜欢
    • 2020-09-28
    • 2018-02-20
    • 1970-01-01
    • 2015-11-08
    • 2018-01-28
    • 2012-01-28
    • 1970-01-01
    • 2019-12-09
    • 2012-05-31
    相关资源
    最近更新 更多