Garde des Bitcoins saisis par le tribunal : ‘OP_COURT’


Cet article a été publié pour la première fois sur Medium.
Nous avons mis en place un contrat intelligent conçu pour la garde et la gestion des bitcoins saisis auprès d’un individu soupçonné de se livrer à des activités illégales. Le contrat a le potentiel de rendre plus efficace, transparente et vérifiable la gestion des bitcoins confisqués en chaîne tout au long d’une procédure judiciaire.
Il est important de noter qu’il s’agit davantage d’une exploration conceptuelle à des fins d’illustration que d’une solution prête à être déployée, en particulier compte tenu des diverses nuances juridiques et complexités juridictionnelles des affaires judiciaires réelles.
Processus général de saisie d’actifs dans des contextes juridiques
La saisie d’avoirs est une pratique courante dans les systèmes juridiques du monde entier, en particulier dans les affaires pénales.

  • Raisons de la saisie
    • Enquêtes criminelles: Les actifs sont souvent saisis au cours d’enquêtes criminelles, en particulier dans les affaires impliquant des activités illégales comme le trafic de drogue, la fraude ou le blanchiment d’argent
    • Preuves ou produits du crime: Les biens saisis peuvent soit constituer une preuve dans l’affaire, soit être considérés comme le produit d’une activité criminelle
  • Autorité et processus juridiques
    • Mandats et ordonnances du tribunal: En règle générale, les organismes chargés de l’application de la loi doivent obtenir un mandat ou une ordonnance du tribunal pour saisir des actifs, garantissant ainsi que le processus respecte les normes juridiques
    • Saisie immédiate dans certaines circonstances: Dans certaines situations, les avoirs peuvent être saisis immédiatement sans mandat, par exemple lors d’une arrestation ou lorsque les avoirs sont bien en vue et liés à un crime
  • Garde et gestion des biens saisis
    • Stockage sécurisé: Une fois saisis, les biens sont catalogués et stockés en toute sécurité
    • Gestion: Dans les cas impliquant de grosses sommes d’argent ou des biens de valeur, une bonne gestion est cruciale pour maintenir la valeur de l’actif
  • Poursuite judiciaire
    • Lien avec une activité criminelle: La procédure judiciaire consiste à établir le lien entre les avoirs saisis et l’activité criminelle
    • Possibilité de contester la saisie: Les défendeurs ont généralement le droit de contester la saisie devant le tribunal
  • Disposition basée sur les résultats
    • Retour au propriétaire: Si le propriétaire est acquitté ou s’il s’avère que les biens ne sont pas liés à une activité criminelle, ils sont généralement restitués
    • Confiscation: S’il est prouvé que les avoirs sont des produits du crime, ils peuvent être confisqués au profit de l’État ou utilisés pour indemniser les victimes
  • Scénarios post-procès
    • Appels et autres réclamations: Après le procès, il pourrait y avoir des appels ou des réclamations supplémentaires concernant les biens saisis, modifiant potentiellement leur disposition finale

    Nous nous concentrons ici sur le point 3.

    Contrat intelligent de garde pour saisie judiciaire

    Notre contrat intelligent vise à gérer et automatiser certains aspects de ce processus grâce à la blockchain. Plus précisément, il est utilisé pour gérer le processus de détention et éventuellement de libération des fonds saisis dans un scénario juridique. Il intègre des rôles tels qu’un juge et un jury, avec des fonctionnalités qui permettent la résolution d’une affaire, le licenciement si un verdict n’est pas atteint dans un délai fixé, et la possibilité d’un appel, où un juge d’appel peut être désigné.
    la classe CourtCase étend SmartContract {
    statique en lecture seule JURY_THRESHOLD = 6

    Garde des Bitcoins saisis par le tribunal : ‘OP_COURT’

    @soutenir()
    jury :FixedArray

    @prop(vrai)
    juge : PubKey

    @soutenir()
    défendeur : Adresse

    @soutenir()
    licenciementDate limite : bigint


    @méthode()
    résolution publique (
    sigsJury : FixedArray,
    sigJuge : Sig,
    ) {
    // Vérifiez les signatures du jury.
    assert(this.checkMultiSig(sigsJury, this.jury), ‘jury invalide multisig’)
    // Vérifiez la signature du juge.
    assert(this.checkSig(sigJudge, this.judge), ‘juge invalide sig’)
    // Libérer les fonds au défendeur.
    laissez les sorties = Utils.buildAddressOutput (
    ce.accusé,
    this.ctx.utxo.value
    )
    sorties += this.buildChangeOutput()
    assert(hash256(outputs) == this.ctx.hashOutputs, ‘incompatibilité des hashOutputs’)
    }

    @méthode()
    rejet public (
    sigJuge : Sig,
    ) {
    // Vérifiez la signature du juge.
    assert(this.checkSig(sigJudge, this.judge), ‘juge invalide sig’)
    // Vérifiez la date limite.
    assert(this.timeLock(this.dismissalDeadline), ‘délai de licenciement
    non atteint’)
    // Libérer les fonds au défendeur.
    laissez les sorties = Utils.buildAddressOutput (
    ce.accusé,
    this.ctx.utxo.value
    )
    sorties += this.buildChangeOutput()
    assert(hash256(outputs) == this.ctx.hashOutputs, ‘incompatibilité des hashOutputs’)
    }

    @méthode()
    appel public (
    sigJuge : Sig,
    juge d’appel : PubKey
    ) {
    // Vérifiez la signature du juge.
    assert(this.checkSig(sigJudge, this.judge), ‘juge invalide sig’)

    // Définir le juge d’appel comme nouveau juge.
    this.judge = appellateJudge

    // Propager le contrat.
    laisser les sorties = this.buildStateOutput(this.ctx.utxo.value)
    sorties += this.buildChangeOutput()
    assert(hash256(outputs) == this.ctx.hashOutputs, ‘incompatibilité des hashOutputs’)
    }
    }

    Principales caractéristiques du contrat :

    • Rôles du jury et du juge: Le contrat comprend des propriétés pour un jury de 12 membres (jury) et un juge (juge). La décision du jury se base sur un seuil de 6 membres
    • Défendeur: L’adresse du défendeur (défendeur) est définie, indiquant la destination potentielle des fonds saisis
    • Délai de licenciement: Un délai (dismissalDeadline) est fixé, au-delà duquel le dossier peut être classé s’il n’est pas résolu

    Méthodes publiques :

    • résoudre: Cette méthode nécessite un quorum de signatures du jury et de la signature du juge pour restituer les fonds au prévenu lorsqu’il est innocent
    • rejeter: Le juge peut classer l’affaire après le délai de rejet, libérant ainsi des fonds au défendeur
    • appel: L’affaire peut faire l’objet d’un appel en désignant un nouveau juge d’appel, gardant les fonds sous le contrôle du contrat de manière récursive jusqu’à une résolution ultérieure

    Le code complet du contrat intelligent est disponible sur GitHub.

    Remerciements

    Ce contrat est inspiré de cet exemple en BitML.
    À surveiller : La blockchain a des capacités illimitées : elle est fondamentalement universellement applicable
    Nouveau sur la blockchain ? Consultez la section Blockchain pour les débutants de CoinGeek, le guide de ressources ultime pour en savoir plus sur la technologie blockchain.