BR112019016290A2 - método implementado por computador, meio de armazenamento não transitório legível por computador e sistema - Google Patents

método implementado por computador, meio de armazenamento não transitório legível por computador e sistema Download PDF

Info

Publication number
BR112019016290A2
BR112019016290A2 BR112019016290-9A BR112019016290A BR112019016290A2 BR 112019016290 A2 BR112019016290 A2 BR 112019016290A2 BR 112019016290 A BR112019016290 A BR 112019016290A BR 112019016290 A2 BR112019016290 A2 BR 112019016290A2
Authority
BR
Brazil
Prior art keywords
transactions
smart contract
blockchain network
blockchain
nodes
Prior art date
Application number
BR112019016290-9A
Other languages
English (en)
Inventor
Ning Xia
Guilu Xie
Fuxi Deng
Original Assignee
Advanced New Technologies Co., Ltd.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced New Technologies Co., Ltd. filed Critical Advanced New Technologies Co., Ltd.
Publication of BR112019016290A2 publication Critical patent/BR112019016290A2/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3829Payment protocols; Details thereof insuring higher security of transaction involving key management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/389Keeping log of transactions for guaranteeing non-repudiation of a transaction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/102Entity profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Accounting & Taxation (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Storage Device Security (AREA)

Abstract

MÉTODO IMPLEMENTADO POR COMPUTADOR, MEIO DE ARMAZENAMENTO NÃO TRANSITÓRIOLEGÍVEL POR COMPUTADORE SISTEMA. A presente invenção se refere às implementações desta especificação que incluem a identificação de uma pluralidade de transações a serem executadas na blockchain, em que as transações são ordenadas em uma ordem de execução, em que as transações incluem um ou mais chamados de contrato inteligente para os contratos inteligentes, cada uma possui uma lista de permissões que identifica uma ou mais contas que estão autorizados a executar o contrato inteligente, e em que a ordem de execução inclui um chamado de contrato inteligente para um contrato inteligente que não possua uma lista de permissões ordenada após a pluralidade de transações; a identificação dos grupos de transações dentro da pluralidade de transações; a instrução dos nódulos da rede blockchain para executar cada um dos grupos de transações em paralelo; a determinação que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações; e em resposta, a instrução dos nódulos da rede blockchain para executar o chamado de contrato inteligente que não inclui uma lista de permissões.

Description

“MÉTODO IMPLEMENTADO POR COMPUTADOR, MEIO DE ARMAZENAMENTO NÃO TRANSITÓRIO LEGÍVEL POR COMPUTADOR E SISTEMA” ANTECEDENTES DA INVENÇÃO
[001] Os sistemas de contabilidade distribuída (DLSs), que também podem ser denominados redes de consenso e/ou redes blockchain, possibilitam que as entidades participantes armazenem os dados com segurança e imutabilidade. Os DLSs normalmente são referidos como redes blockchain sem referenciar nenhum caso de usuário específico. Os exemplos de tipos de redes blockchain podem incluir as redes blockchain públicas, redes blockchain privadas e redes blockchain de consórcio. Uma rede blockchain de consórcio é fornecida para um grupo seleto de entidades, que controla o processo de consenso e incluem uma camada de controle de acesso.
[002] Um contrato inteligente é um conjunto de instruções de software executáveis armazenadas e executadas por uma rede blockchain. Os contratos inteligentes, em geral, são armazenados sem criptografia e, por conseguinte, são visíveis para todos os participantes da rede blockchain. Os participantes da rede blockchain podem escrever e publicar seus próprios contratos inteligentes e, em geral, também podem chamar os contratos inteligentes que foram implantados anteriormente na rede blockchain.
[003] Um problema encontrado em redes blockchain é a velocidade na qual as transações (incluindo os chamados de contrato inteligente) são processadas. Em geral, os nódulos na rede blockchain processam as transações em série na ordem em que são enviadas. Isso pode conduzir a uma baixa taxa de transferência de transações e atrasos entre o momento em que uma transação é enviada e quando ela é liberada.
[004] As técnicas para solucionar estes problemas de desempenho de transação em uma rede blockchain seriam vantajosas.
DESCRIÇÃO RESUMIDA DA INVENÇÃO
[005] As implementações desta especificação incluem os métodos implementados por computador para a execução paralela de transações em uma rede blockchain com base em listas de permissões de contrato inteligente. Mais especialmente, as implementações desta especificação se destinam às técnicas para a execução de grupos de transações e chamados de contratos inteligentes que possuem uma dependência compartilhada em paralelo com outros grupos.
[006] Em algumas implementações, as ações incluem a identificação de uma pluralidade de transações a serem executadas na blockchain, em que as transações são ordenadas em uma ordem de execução, em que as transações incluem um ou mais chamados de contrato inteligente para os contratos inteligentes, cada um possui uma lista de permissões identificando uma ou mais contas que estão autorizadas a executar o contrato inteligente e em que a ordem de execução inclui um chamado de contrato inteligente para um contrato inteligente que não possui uma lista de permissões ordenada após a pluralidade de transações; a identificação dos grupos de transações dentro da pluralidade de transações, em que as transações em cada grupo estão associadas a um conjunto especial de contas na rede blockchain e em que o conjunto especial de contas associadas a cada um ou mais chamados de contrato inteligente está determinado com base na lista de permissões associada ao chamado de contrato inteligente; a instrução dos nódulos da rede blockchain para executar cada um dos grupos de transações em paralelo, em que a execução de cada grupo de transações inclui a execução das transações dentro do grupo em série e de acordo com a ordem de execução; a determinação que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações; e em resposta, a determinação que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações, a instrução dos nódulos da rede blockchain para executar o chamado de contrato inteligente que não inclui uma lista de permissões. Outras implementações incluem os sistemas, aparelhos e programas de computador correspondentes, configurados para realizar as ações dos métodos, codificados em dispositivos de armazenamento de computador.
[007] Estas e outras implementações, opcionalmente, podem incluir uma ou mais das seguintes características.
[008] Em alguns casos, a instrução dos nódulos da rede blockchain para executar cada um dos grupos de transações em paralelo inclui a instrução de um primeiro conjunto de nódulos para executar um primeiro grupo de transações e a instrução de um primeiro conjunto de nódulos para executar um segundo grupo de transações.
[009] Em algumas implementações, a determinação que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações inclui a determinação que todas as transações na pluralidade de transações foram incluídas em um ou mais blocos armazenados em uma blockchain mantida pela blockchain rede.
[010] Em alguns casos, a instrução dos nódulos da rede blockchain para executar cada um dos grupos de transações em paralelo inclui o envio de uma mensagem para os nódulos através de uma rede.
[011] Em alguns casos, a identificação da pluralidade de transações a serem executadas na blockchain inclui o recebimento de transações transmitidas para a rede blockchain.
[012] Em algumas implementações, a lista de permissões está incluída em um conjunto de instruções executáveis associadas a cada contrato inteligente.
[013] Em alguns casos, a lista de permissões está separada de um conjunto de instruções executáveis associadas a cada contrato inteligente.
[014] Em algumas implementações, a lista de permissões inclui uma identificação de uma ou mais contas que estão autorizadas a acessar cada contrato inteligente.
[015] Em alguns casos, a lista de permissões inclui uma referência a uma localização externa a cada contrato inteligente que armazena uma ou mais contas que estão autorizadas a acessar cada contrato inteligente.
[016] Esta especificação também fornece um ou mais meios de armazenamento não transitórias legíveis por computador acopladas a um ou mais processadores e que possui as instruções armazenadas neles que, quando executadas por um ou mais processadores, ocasionam que um ou mais processadores realizem as operações de acordo com as implementações dos métodos fornecidos no presente.
[017] Esta especificação ainda fornece um sistema para a implementação dos métodos fornecidos no presente. O sistema inclui um ou mais processadores, e um meio de armazenamento legível por computador acoplado a um ou mais processadores que possuem as instruções armazenadas nele que, quando executadas por um ou mais processadores, ocasionam que um ou mais processadores realizem as operações de acordo com as implementações dos métodos fornecidos no presente.
[018] É considerado que os métodos, de acordo com esta especificação, possam incluir qualquer combinação dos aspectos e características descritos no presente. Isto é, os métodos, de acordo com esta especificação, não estão limitados às combinações de aspectos e características especificamente descritos no presente, mas também incluem qualquer combinação dos aspectos e características fornecidos.
[019] Os detalhes de uma ou mais implementações desta especificação são apresentados nos desenhos anexos e na descrição abaixo. Outras características e vantagens desta especificação serão evidentes a partir da descrição e desenhos, e a partir das reivindicações.
BREVE DESCRIÇÃO DAS FIGURAS
[020] A Figura 1 ilustra um exemplo de um ambiente que pode ser utilizado para a execução das implementações desta especificação.
[021] A Figura 2 ilustra um exemplo de uma arquitetura conceptual, de acordo com as implementações desta especificação.
[022] A Figura 3 ilustra um exemplo de um ambiente para habilitar as listas de permissões de contrato inteligente, de acordo com as implementações desta especificação.
[023] A Figura 4A ilustra um exemplo de uma ordem de execução para as transações em uma rede blockchain, de acordo com as implementações desta especificação.
[024] A Figura 4B ilustra um exemplo de uma ordem de execução paralela para as transações em uma rede blockchain, de acordo com as implementações desta especificação.
[025] A Figura 5 ilustra um exemplo de um processo que pode ser executado, de acordo com as implementações desta especificação.
[026] A Figura 6 ilustra os exemplos de módulos de um aparelho, de acordo com as implementações desta especificação.
[027] Os símbolos de referência similares nos diversos desenhos indicam elementos similares.
DESCRIÇÃO DETALHADA DA INVENÇÃO
[028] As implementações desta especificação incluem os métodos implementados por computador para compelir as listas de permissões de conta para os contratos inteligentes. Mais especialmente, as implementações desta especificação são direcionadas às técnicas para possibilitar que o criador de um contrato inteligente defina uma lista de permissões especificando quais contas podem chamar o contrato inteligente.
[029] Para fornecer o contexto adicional para as implementações desta especificação e, conforme foi introduzido acima, os sistemas de contabilidade distribuída (DLSs), que também podem ser referidos como redes de consenso (por exemplo, compostas por nódulos peer-to-peer), e as redes blockchain, possibilitam que as entidades participantes executem as transações com segurança e imutabilidade e armazenem os dados. O termo “blockchain” é utilizado no presente, em geral, para se referir a um DLS sem referência a qualquer caso de utilização especial.
[030] Uma blockchain é uma estrutura de dados que armazena as transações de maneira que as transações sejam imutáveis e possam ser verificadas posteriormente. Uma blockchain inclui um ou mais blocos. Cada bloco na cadeia está ligado a um bloco anterior imediatamente antes dele na cadeia, incluindo um hash criptográfico do bloco anterior. Cada bloco também inclui um timestamp (registro de data e hora), seu próprio hash criptográfico e uma ou mais transações. As transações, que foram verificadas anteriormente pelos nódulos da rede blockchain, são hashed e codificadas em uma árvore Merkle. Uma árvore Merkle é uma estrutura de dados em que os dados nos nódulos de folhas da árvore são hashed e todos os hashes em cada ramificação da árvore são concatenados na raiz da ramificação. Esse processo continua subindo a árvore até a raiz da árvore inteira, que armazena um hash que é representativo de todos os dados na árvore. Um hash supostamente de uma transação armazenada na árvore pode ser verificado rapidamente através da determinação se é consistente com a estrutura da árvore.
[031] Considerando que uma blockchain é uma estrutura de dados para o armazenamento das transações, uma rede blockchain é uma rede de nódulos de computação que gerencia, atualiza e mantém uma ou mais blockchains. Conforme introduzido acima, uma rede blockchain pode ser fornecida como uma rede blockchain pública, uma rede blockchain privada ou uma rede blockchain de consórcio.
[032] Em uma rede blockchain pública, o processo de consenso é controlado pelos nódulos da rede de consenso. Por exemplo, centenas, milhares e até milhões de entidades podem cooperar com uma rede blockchain pública, cada uma operando, pelo menos, um nódulo na rede blockchain pública. Por conseguinte, a rede blockchain pública pode ser considerada uma rede pública em relação às entidades participantes. Em alguns exemplos, a maioria das entidades (nódulos) deve assinar cada bloco para que o bloco seja válido e adicionado à blockchain (contabilidade distribuída) da rede blockchain. Os exemplos de redes blockchain públicas incluem as redes de pagamento peer-to- peer específicas que alavancam uma contabilidade distribuída, conhecida como blockchain. Conforme observado acima, o termo “blockchain”, no entanto, é utilizado para, em geral, se referir às contabilidades distribuídas sem referência especial à rede blockchain.
[033] Em geral, uma rede blockchain de consórcio é privada entre as entidades participantes. Em uma rede blockchain de consórcio, o processo de consenso é controlado por um conjunto autorizado de nódulos, um ou mais nódulos sendo operados por uma entidade respectiva (por exemplo, uma instituição financeira, companhia de seguros). Por exemplo, um consórcio de dez (10) entidades (por exemplo, as instituições financeiras, companhias de seguros) pode operar uma rede blockchain de consórcio, cada um operando, pelo menos, um nódulo na rede blockchain de consórcio. Consequentemente, a rede blockchain de consórcio pode ser considerada uma rede privada em relação às entidades participantes. Em alguns exemplos, cada entidade (nódulo) deve assinar todos os blocos para que o bloco seja válido e adicionado à blockchain.
Em alguns exemplos, pelo menos, um subconjunto de entidades (nódulos) (por exemplo, pelo menos, 7 entidades) deve assinar cada bloco para que o bloco seja válido e adicionado à blockchain.
[034] Está contemplado que as implementações desta especificação podem ser executadas em qualquer tipo adequado de rede blockchain.
[035] As implementações desta especificação estão descritas em maiores detalhes no presente em vista do contexto acima. Mais especialmente, e conforme introduzido acima, as implementações desta especificação são direcionadas às técnicas para possibilitar que o criador de um contrato inteligente defina uma lista de permissões especificando quais contas podem chamar o contrato inteligente.
[036] Em geral, um contrato inteligente é um conjunto de uma ou mais instruções de computador que são armazenadas em uma blockchain e executadas por nódulos de uma rede blockchain. O código para um contrato inteligente, em geral, é transformado em uma forma que é executável pelos nódulos da rede blockchain (por exemplo, o bytecode) e o próprio bytecode ou bytecode configurado para recuperar o bytecode do contrato inteligente está armazenado na blockchain. As funções definidas no código do contrato inteligente, em seguida, podem ser chamadas pelos participantes da rede blockchain, ocasionando que os nódulos executem as instruções na função chamada.
[037] Esta especificação descreve as técnicas que possibilitam ao criador de um contrato inteligente especificar uma lista de contas (uma lista de permissões) na rede de blockchains que têm permissão para chamar o contrato inteligente. Quando um participante da rede blockchain chama um contrato inteligente implantado na blockchain gerenciada pela rede blockchain, o participante fornece uma conta como parte do chamado. A rede blockchain verifica a lista de permissões associada ao contrato inteligente para a conta do participante. Se a conta do participante estiver na lista de permissões, a rede blockchain executa o chamado de contrato inteligente. Se a conta do participante não estiver na lista de permissões, a rede blockchain não irá executar o chamado de contrato inteligente. A rede blockchain também pode armazenar um registro da tentativa fracassada do participante de acessar o contrato inteligente.
[038] As implementações desta especificação são direcionadas à execução de grupos de transações (incluindo os chamados de contato inteligente) que possuem uma dependência compartilhada (isto é, afetando as mesmas contas) em paralelo com outros grupos. As contas afetadas por um chamado de contrato inteligente podem ser determinadas com base na lista de permissões associada ao contrato inteligente. Uma vez que as transações em grupos diferentes não dependem umas das outras (por exemplo, não afetam as mesmas contas na rede blockchain), a ordem em que as transações em grupos diferentes são executadas em relação a uma outra não afeta o estado geral da rede blockchain. Por conseguinte, essas transações podem ser executadas em paralelo, o que pode conduzir a um aumento no rendimento da transação em uma rede blockchain.
[039] A Figura 1 ilustra um exemplo de um ambiente (100) que pode ser utilizado para a execução das implementações desta especificação. Em alguns exemplos, o ambiente (100) possibilita que as entidades participem de uma rede blockchain (102). O ambiente (100) inclui os dispositivos de computação (106), (108) e uma rede (110). Em alguns exemplos, a rede (110) inclui uma rede área local (LAN), rede de longa distância (WAN), Internet ou uma de suas combinações, e conecta os sites da Web, dispositivos de usuário (por exemplo, os dispositivos de computação) e sistemas de back-end. Em alguns exemplos, a rede (110) pode ser acessada através de um link de comunicação com fio e/ou sem fio. Em alguns exemplos, a rede (110) possibilita a comunicação com, e dentro da rede blockchain (102). Em geral, a rede (110) representa uma ou mais redes de comunicação. Em alguns casos, os dispositivos de computação (106), (108) podem ser os nódulos de um sistema de computação em nuvem (não mostrado) ou cada dispositivo de computação
(106), (108) pode ser um sistema de computação em nuvem separado incluindo uma pluralidade de computadores interconectados por uma rede e funcionando como um sistema de processamento distribuído.
[040] No exemplo descrito, cada sistema de computação (106), (108) pode incluir qualquer sistema de computação adequado que possibilita a participação como um nódulo na rede blockchain (102). Os exemplos de dispositivos de computação incluem, sem limitação, um servidor, um computador de mesa, um computador portátil, um dispositivo de computação tablet e um smartphone. Em alguns exemplos, os sistemas de computação (106), (108) hospedam um ou mais serviços implementados por computador para interagir com a rede blockchain (102). Por exemplo, o sistema de computação (106) pode hospedar os serviços implementados por computador de uma primeira entidade (por exemplo, o Participante A), tal como o sistema de gerenciamento de transações que a primeira entidade utiliza para gerenciar suas transações com uma ou mais entidades (por exemplo, outros participantes). O sistema de computação (108) pode hospedar os serviços implementados por computador de uma segunda entidade (por exemplo, o Participante B), tal como o sistema de gerenciamento de transação que a segunda entidade utiliza para gerenciar suas transações com uma ou mais entidades (por exemplo, outros participantes). No exemplo da Figura 1, a rede de blockchain (102) é representada como uma rede de nódulos peer-to-peer, e os sistemas de computação (106), (108) fornecem os nódulos da primeira entidade e segunda entidade, respectivamente, que participam na rede blockchain de consórcio (102).
[041] A Figura 2 ilustra um exemplo de uma arquitetura conceptual (200) de acordo com as implementações da presente especificação. O exemplo de uma arquitetura conceptual (200) inclui os sistemas participantes (202), (204), (206) que correspondem ao Participante A, Participante B e Participante C, respectivamente. Cada participante (por exemplo, o usuário, empresa) participa de uma rede blockchain (212) fornecida como uma rede peer-to-peer incluindo uma pluralidade de nódulos (214), pelo menos, alguns dos quais gravam a informação imutável em uma blockchain (216). Embora uma única blockchain (216) seja representada esquematicamente dentro da rede blockchain (212), são fornecidas múltiplas cópias da blockchain (216) e mantidas através da rede blockchain (212), conforme descrito no presente em maiores detalhes.
[042] No exemplo descrito, cada sistema participante (202), (204), (206) é fornecido por, ou em nome do Participante A, Participante B e Participante C, respectivamente, e funciona como um respectivo nódulo (214) dentro da rede blockchain. Conforme utilizado no presente, um nódulo, em geral, se refere a um sistema individual (por exemplo, o computador, servidor) que está conectado à rede blockchain (212) e possibilita que um participante respectivo participe na rede blockchain. No exemplo da Figura 2, um participante corresponde a cada nódulo (214). Está contemplado, no entanto, que um participante pode operar múltiplos nódulos (214) dentro da rede blockchain (212), e/ou múltiplos participantes podem compartilhar um nódulo (214). Em alguns exemplos, os sistemas participantes (202), (204), (206) se comunicam com, ou através da rede blockchain (212) utilizando um protocolo (por exemplo, o protocolo de transferência de hipertexto seguro (HTTPS)) e/ou utilizando os chamados de procedimento remoto (RPCs).
[043] Os nódulos (214) podem possuir diversos graus de participação dentro da rede blockchain (212). Por exemplo, alguns nódulos (214) podem participar no processo de consenso (por exemplo, como nódulos de mineração que adicionam os blocos à blockchain (216)), enquanto outros nódulos (214) não participam no processo de consenso. Como outro exemplo, alguns nódulos (214) armazenam uma cópia completa da blockchain (216), enquanto outros nódulos (214) apenas armazenam as cópias de partes da blockchain (216). Por exemplo, os privilégios de acesso aos dados podem limitar os dados de blockchain que um respectivo participante armazena dentro de seu respectivo sistema. No exemplo da Figura 2, os sistemas participantes (202), (204), (206) armazenam as respetivas cópias completas (216’), (216’’), (216’’’) da blockchain (216).
[044] Uma blockchain (por exemplo, a blockchain (216) da Figura 2) é composta por uma cadeia de blocos, cada bloco armazenando os dados. Os exemplos de dados incluem os dados de transações representativos de uma transação entre dois ou mais participantes. Embora as transações sejam utilizadas no presente por meio de exemplos não limitantes, é contemplado que quaisquer dados adequados possam ser armazenados em uma blockchain (por exemplo, os documentos, imagens, vídeos, áudio). Os exemplos de transações podem incluir, sem limitação, as trocas de algo de valor (por exemplo, os ativos, produtos, serviços). Os dados da transação são armazenados de maneira imutável dentro da blockchain. Isto é, os dados da transação não podem ser alterados.
[045] Antes de armazenar em um bloco, os dados da transação são criptografados. O hashing é um processo de transformar os dados da transação (fornecidos como dados de string) em um valor de hash de comprimento fixo (também fornecido como dados de string). Não é possível un-hash o valor de hash para obter os dados da transação. O hashing assegura que até mesmo uma pequena alteração nos dados da transação resulte em um valor de hash completamente diferente. Além disso, e conforme observado acima, o valor de hash é de comprimento fixo. Isto é, não importa o tamanho dos dados da transação, o tamanho do valor do hash é fixo. O hashing inclui o processamento dos dados da transação por meio de uma função hash para gerar o valor de hash. Um exemplo de função hash inclui, sem limitação, o algoritmo hash seguro (SHA)-256, que gera os valores hash de 256 bits.
[046] Os dados de transação de múltiplas transações são hashed e armazenados em um bloco. Por exemplo, os valores de hash de duas transações são fornecidos e são eles próprios hashed para fornecer outro hash. Esse processo é repetido até que, para que todas as transações sejam armazenadas em um bloco, um único valor de hash seja fornecido. Esse valor de hash é referido como um hash de raiz Merkle e está armazenado em um cabeçalho do bloco. Uma alteração em qualquer uma das transações irá resultar em alterações na quantia de hash e, por fim, em uma alteração no hash da raiz Merkle.
[047] Os blocos são adicionados à blockchain através de um protocolo de consenso. Múltiplos nódulos dentro da rede blockchain participam do protocolo de consenso e competem para possuir um bloco adicionado à blockchain. Esses nódulos são referidos como mineiros (ou nódulos de decisão).
O POW, introduzido acima, é utilizado como um exemplo não limitante.
[048] Os nódulos de mineração executam o processo de consenso para adicionar as transações à blockchain. Embora múltiplos nódulos mineradores participem do processo de consenso, apenas um nódulo de mineração pode gravar o bloco na blockchain. Isto é, os nódulos de mineração competem no processo de consenso para possuir seu bloco adicionado à blockchain. Em maiores detalhes, um nódulo de mineração coleta periodicamente as transações pendentes de um pool de transações (por exemplo, até um limite predefinido no número de transações que podem estar incluídas em um bloco, caso exista). O pool de transações inclui as mensagens de transação dos participantes da rede blockchain. O nódulo de mineração constrói um bloco e adiciona as transações no bloco. Antes de adicionar as transações ao bloco, o nódulo de mineração verifica se alguma das transações já está incluída em um bloco da blockchain. Se uma transação já estiver incluída em outro bloco, a transação será descartada.
[049] O nódulo de mineração gera um cabeçalho de bloco, hashes todas as transações no bloco e combina o valor de hash em pares para gerar mais valores de hash até que um único valor de hash seja fornecido para todas as transações no bloco (o hash de raiz Merkle). Este hash é adicionado ao cabeçalho do bloco. O minerador também determina o valor de hash do bloco mais recente na blockchain (isto é, o último bloco adicionado à blockchain). O nódulo de mineração também inclui um valor arbitrário (nonce) e um timestamp (registro de data e hora) para o cabeçalho do bloco. Em um processo de mineração, o nódulo de mineração tenta encontrar um valor de hash que atenda aos parâmetros necessários. O nódulo de mineração continua alterando o valor arbitrário (nonce) até encontrar um valor de hash que atenda os parâmetros necessários.
[050] Cada minerador na rede blockchain tenta encontrar um valor de hash que atenda os parâmetros necessários e, dessa maneira, competir entre si. Opcionalmente, um dos nódulos de mineração encontra um valor de hash que atende os parâmetros necessários e anuncia isso para todos os outros nódulos de mineração na rede blockchain. Os outros nódulos de mineração verificam o valor do hash e, se for determinado estar correto, verifica cada transação no bloco, aceita o bloco e anexa o bloco à sua cópia da blockchain. Dessa maneira, um estado global da blockchain é consistente em todos os nódulos de mineração dentro da rede blockchain. O processo descrito acima é o protocolo de consenso de POW.
[051] Um exemplo não limitante é fornecido com referência à Figura
2. Neste exemplo, o Participante A quer enviar uma quantia para o Participante B. O Participante A gera uma mensagem de transação (por exemplo, incluindo os campos De, Para e Valor) e envia a mensagem de transação para a rede blockchain, que adiciona a mensagem de transação para um pool de transações.
Cada nódulo de mineração na rede blockchain cria um bloco e toma todas as transações do pool de transações (por exemplo, até um limite predefinido no número de transações que podem ser adicionadas a um bloco, caso exista) e adiciona as transações ao bloco. Dessa maneira, a transação publicada pelo Participante A é adicionada aos blocos dos nódulos de mineração.
[052] Em algumas redes blockchain, a criptografia é implementada para manter a privacidade das transações. Por exemplo, se dois nódulos quiserem manter uma transação privada, de maneira que outros nódulos na rede blockchain não consigam discernir os detalhes da transação, os nódulos podem criptografar os dados da transação. Os exemplos de métodos criptográficos incluem, sem limitação, a criptografia simétrica e criptografia assimétrica. A criptografia simétrica se refere a um processo de criptografia que utiliza uma única chave para a criptografia (geração de texto cifrado a partir de texto original) e a descriptografia (geração de texto original a partir do texto cifrado). Na criptografia simétrica, a mesma chave está disponível para múltiplos nódulos, por conseguinte, cada nódulo pode criptografar os dados da transação.
[053] A criptografia assimétrica utiliza pares de chaves que incluem, cada um, uma chave privada e uma chave pública, a chave privada sendo conhecida apenas por um nódulo respectivo e a chave pública sendo conhecida por qualquer um ou todos os outros nódulos na rede blockchain. Um nódulo pode utilizar a chave pública de outro nódulo para criptografar os dados e os dados criptografados podem ser descriptografados utilizando a chave privada de outro nódulo. Por exemplo, e novamente com referência à Figura 2, o Participante A pode utilizar a chave pública do Participante B para criptografar os dados e enviar os dados criptografados para o Participante B. O Participante B pode utilizar sua chave privada para descriptografar os dados criptografados (texto cifrado) e extrair os dados originais (texto original). As mensagens criptografadas com a chave pública de um nódulo apenas podem ser descriptografadas utilizando a chave privada do nódulo.
[054] A criptografia assimétrica é utilizada para fornecer as assinaturas digitais, o que possibilita aos participantes em uma transação confirmar outros participantes na transação, bem como a validade da transação.
Por exemplo, um nódulo pode assinar digitalmente uma mensagem e outro nódulo pode confirmar que a mensagem foi enviada pelo nódulo com base na assinatura digital do Participante A. As assinaturas digitais também podem ser utilizadas para garantir que as mensagens não sejam adulteradas em trânsito.
Por exemplo, e novamente com referência à Figura 2, o Participante A precisa enviar uma mensagem para o Participante B. O Participante A gera um hash da mensagem e, em seguida, utilizando sua chave privada, criptografa o hash para fornecer uma assinatura digital como o hash criptografado. O Participante A acrescenta a assinatura digital à mensagem e envia a mensagem com assinatura digital para o Participante B. O Participante B decriptografa a assinatura digital utilizando a chave pública do Participante A e extrai o hash. O participante B hashes a mensagem e compara os hashes. Se os hashes forem iguais, o Participante B poder confirmar que a mensagem foi realmente do Participante A e não foi adulterada.
[055] A Figura 3 ilustra um exemplo de um ambiente (300) para habilitar as listas de permissões de contrato inteligente, de acordo com as implementações desta especificação. Conforme mostrado, um contrato inteligente (302) está armazenado na blockchain (216) da rede blockchain (212) da Figura 2. O contrato inteligente (302) inclui as instruções (304) e uma lista de permissões (306). A lista de permissões (306) inclui uma ou mais contas (308).
[056] Conforme descrito acima, o contrato inteligente (302) está armazenado na blockchain (216). Os participantes na rede blockchain (212) podem chamar o contrato inteligente (302), o que pode ocasionar que os nódulos (214) da rede blockchain (212) executem as instruções (304). Em algumas implementações, os nódulos (214) da rede blockchain irão verificar se uma conta especificada pelo autor do chamado do contrato inteligente está incluída em uma ou mais contas (308) especificadas pela lista de permissões (306). Se a conta estiver na lista de permissões (306), os nódulos (214) irão executar as instruções (304). Se a conta não estiver na lista de permissões (306), os nódulos (214) não executam as instruções (304).
[057] Em algumas implementações, as instruções (304) podem ser o código de software escrito em uma linguagem de programação de nível elevado suportada pelos nódulos (214) da rede blockchain (212), tal como, por exemplo, Solidity, Serpent, LLL, Viper, Mutan, C, C++, Python, Java, Javascript ou outras linguagens de programação. As instruções (304) também podem ser compiladas por bytecode gerado a partir do código de software associado ao contrato inteligente (302).
[058] Em algumas implementações, a lista de permissões (306) e as contas (308) são armazenadas na blockchain (216) em conjunto com o contrato inteligente (302). Em alguns casos, a lista de permissões (306) e as contas (308) estão incluídas nas instruções (304) do contrato inteligente (302).
Por exemplo, a lista de permissões (306) pode estar incluída em uma diretiva nas instruções (304), tal como uma instrução de pré-processador ou um comentário especialmente formatado. A lista de permissões (306) também pode estar incluída utilizando uma construção específica para a linguagem de programação utilizada para criar o contrato inteligente, tal como um decorador de função. A lista de permissões (306) também pode ser especificada em instruções executáveis dentro das instruções (304). Em algumas implementações, a lista de permissões (306) é examinada antes dos nódulos (214) executarem as instruções (304). Em alguns casos, tal como quando a lista de permissões (306) está incluída nas instruções executáveis, os nódulos 214) podem iniciar a execução das instruções (304) antes de avaliar a lista de permissões (306). Por exemplo, o contrato inteligente (302) poderia incluir uma função privada definida com as instruções (304) que tomariam a conta do autor do chamado como um parâmetro e verificar que o autor do chamado está autorizado para chamar o contrato inteligente com base na lista de permissões (306). Tal função poderia ser chamada automaticamente quando o contrato inteligente (302) fosse executado, e o contrato inteligente (302) simplesmente poderia sair se a conta do autor do chamado não estivesse autorizada a executar o contrato. Em alguns casos, o nódulo (214) que está executando o contrato inteligente (302) pode chamar a função privada para verificar a lista de permissões (306) e somente executar a função principal do contrato inteligente (302) se o chamado para a função privada indicar que a conta do autor do chamado está autorizada para executar o contrato inteligente (302.
[059] A Figura 4A ilustra um exemplo de uma ordem de execução (400) para as transações em uma rede blockchain, de acordo com as implementações desta especificação. Conforme mostrado, a ordem de execução (400) inclui uma pluralidade de transações ((405), (410), (415), (420)) sequenciadas de acordo com a ordem na qual elas devem ser executadas pelos nódulos de uma rede blockchain. As transações (405a), (405b) e (405c) são chamados para os contratos inteligentes. Além dos chamados de contrato inteligente, a ordem de execução (400) inclui múltiplos grupos de transações compartilhando uma dependência comum (denotados por hatching cruzado), tal como, por exemplo, afetando a mesma conta ou contas. Os chamados de contrato inteligente (405a) e (405b) estão agrupados com outras transações com base no conteúdo de suas respectivas listas de permissões, que definem as contas que podem executar o contrato inteligente e, por conseguinte, podem possuir seu estado alterado pelo contrato inteligente. Conforme descrito abaixo, cada grupo de transações pode ser executado em paralelo pelos nódulos da rede blockchain, de acordo com as implementações desta especificação.
[060] A Figura 4B ilustrs um exemplo de uma ordem de execução paralela (450) para as transações em uma rede de blockchain, de acordo com as implementações desta especificação. Conforme mostrado, na ordem de execução paralela (450), os grupos de transações (455), (460) e (465) foram identificados. Os nódulos de uma rede blockchain podem executar os grupos de transações em paralelo, conforme mostrado na Figura 4B e discutido acima. Em alguns casos, todas as transações em um grupo compartilham uma dependência comum e, por conseguinte, são executadas em série, de acordo com a ordem de execução original. Isso garante que o estado da rede blockchain (por exemplo, os saldos das contas) será o mesmo resultado da execução das transações, de acordo com a ordem de execução paralela (450), como seria após executar as transações de acordo com a ordem de execução (400) na Figura 4A.
[061] Considere o exemplo em que a conta A possui um saldo de $ 0 antes de executar qualquer uma das transações na Figura 4B, em que a transação (410a) representa um pagamento para a conta A a partir da conta B, na quantia de $ 400, e a transação (410b) representa um pagamento da conta A para a conta C de $ 50. Se as transações (410a) e (410b) forem executadas em série (conforme originalmente descrito na ordem de execução (400)), a conta A, em primeiro lugar, será financiada $ 400 e, em seguida, debitada em $ 50, deixando um saldo de $ 250. No entanto, se as transações (410a) e (410b) não forem executadas em série e a transação (410b) for executada antes de (410a), a conta A terá um saldo de $ 0 quando o pagamento da transação 410b é executado. A conta A irá possuir um saldo insuficiente para financiar o pagamento neste cenário, o que poderia levar a transação (410b) a ser rejeitada pela rede blockchain.
[062] Com base nesse exemplo, considere um caso em que a transação (420a) representa um pagamento de uma conta D para uma conta E de $ 100. Uma vez que as contas afetadas pela transação (420a) (contas D e E) não incluem nenhuma das contas afetadas pelas transações (410a) e (410b) (contas A, B e C), a transação (420a) não possui nenhuma dependência comum com as transações (410a) e (410b). Por conseguinte, a transação (420a) pode ser executada em paralelo com as transações (410a) e (410b).
[063] Os chamados de contrato inteligente (por exemplo, (405a-c) são diferentes de outros tipos de transações, uma vez que as contas que a execução de um contrato inteligente irá afetar podem não ser determináveis com base no contrato inteligente em si. Uma vez que um contrato inteligente é um programa de software executável que pode ser chamado por qualquer participante da rede blockchain, isso, teoricamente, pode afetar qualquer conta na rede blockchain. No entanto, com a adição das listas de permissões descritas acima, as contas que um determinado contrato inteligente pode afetar podem ser determinadas. Uma vez que somente as contas na lista de permissões podem ocasionar que o contrato inteligente seja executado, somente essas contas apresentam o potencial de alterar seu estado (por exemplo, seu saldo) pela execução do contrato inteligente. A lista de permissões, por conseguinte, possibilita que os chamados de contratos inteligentes sejam agrupados para a execução paralela na rede de blockchain em conjunto com outras transações que afetam as mesmas contas.
[064] Em algumas implementações, as transações a serem executadas em série podem ser agrupadas. Por exemplo, conforme mostrado na Figura 4B, as transações (410a-b) e o chamado de contrato inteligente (405b) estão agrupados em (455), as transações (415a-e) estão agrupadas em (460) e as transações (420a-c) e o chamado de contrato inteligente (405a) estão agrupados em (465). Cada um dos grupos (455), (460) e (465) pode ser executado em paralelo pelos nódulos da rede blockchain. Executar os grupos de transação (455), (460) e (465) em paralelo pode conduzir a um aumento no rendimento da transação na rede blockchain, uma vez que a rede está executando três transações em paralelo em vez de apenas uma se todas as transações fossem executadas em série.
[065] Em algumas implementações, se um contrato inteligente não incluir nenhuma lista de permissões, qualquer conta na rede blockchain pode executar o contrato inteligente. O chamado de contrato inteligente (405c) é um chamado de contrato inteligente que não especifica uma lista de permissões.
Uma vez que o chamado de contrato inteligente (405c) pode ser executado por qualquer conta na rede blockchain, ele não pode ser executado em paralelo com outras transações. O chamado de contrato (405c) representa um ponto de sincronização, em que a execução paralela converge. Uma vez que os chamados de contrato conduzem à execução das instruções que compõem o contrato inteligente, pode não ser possível determinar o escopo das contas que um determinado chamado contratual irá afetar. Por exemplo, considere um contrato inteligente simples que aceita uma conta específica e uma quantia de pagamento como parâmetros e aplica a quantia do pagamento à conta específica se alguma condição for verdadeira. Uma vez que um chamador deste contrato inteligente especifica a conta específica quando o contrato inteligente é chamado, não é possível determinar, a partir da definição do contrato inteligente em si (isto é, seu código-fonte), quais contas um chamado específico ao contrato inteligente irá afetar. Por esse motivo, em algumas implementações, o chamado de contrato pode ser observado como uma transação com o potencial de afetar todas as contas na rede blockchain que, por conseguinte, não pode ser executada em paralelo com outras transações. Por conseguinte, a ordem de execução paralela (405c). Por exemplo, conforme mostrado, os grupos (455), (460) e (465) são executados em paralelo até alcançar o chamado do contrato (405c). Neste ponto, a rede de blockchain espera até que todas as transações nos grupos (455), (460) e (465) concluíram a execução e, em seguida, prossegue com a execução do chamado de contrato inteligente (405c).
[066] A Figura 5 ilustra um exemplo de um processo (500) que pode ser executado, de acordo com as implementações desta especificação. Em algumas implementações, o processo (400) pode ser realizado utilizando um ou mais programas executáveis por computador executados utilizando um ou mais dispositivos de computação.
[067] Em (502), uma pluralidade de transações a serem executadas na blockchain é identificada. As transações são ordenadas em uma ordem de execução e podem incluir um ou mais chamados de contrato inteligente para os contratos inteligentes, cada um possui uma lista de permissões identificando uma ou mais contas que estão autorizadas a executar o contrato inteligente. A ordem de execução inclui um chamado de contrato inteligente para um contrato inteligente que não possui uma lista de permissões ordenada após a pluralidade de transações. Em alguns casos, a identificação da pluralidade de transações a serem executadas na blockchain inclui o recebimento de transações transmitidas para a rede blockchain. Em algumas implementações, a lista de permissões de cada contrato inteligente está incluída em um conjunto de instruções executáveis associadas a cada contrato inteligente. A lista de permissões pode ser separada de um conjunto de instruções executáveis associadas a cada contrato inteligente. A lista de permissões pode incluir uma identificação de uma ou mais contas que estão autorizadas a acessar cada contrato inteligente. Em alguns casos, a lista de permissões inclui uma referência a uma localização externa a cada contrato inteligente que armazena uma ou mais contas que estão autorizadas a acessar cada contrato inteligente.
[068] Em (504), os grupos de transações são identificados dentro da pluralidade de transações, em que as transações em cada grupo são associadas a um determinado conjunto de contas na rede blockchain, e em que o conjunto especial de contas associadas a cada um ou mais chamados de contrato inteligentes são determinadas com base na lista de permissões associada ao chamado de contrato inteligente.
[069] Em (506), os nódulos da rede blockchain são instruídos para executar cada um dos grupos de transações em paralelo, em que a execução de cada grupo de transações inclui a execução das transações dentro do grupo em série e de acordo com a ordem de execução. Em alguns casos, a instrução dos nódulos da rede blockchain para executar cada um dos grupos de transações em paralelo inclui a instrução de um primeiro conjunto de nódulos para executar um primeiro grupo de transações e a instrução de um primeiro conjunto de nódulos para executar um segundo grupo de transações. Em alguns casos, a instrução dos nódulos da rede blockchain para executar cada um dos grupos de transações em paralelo inclui o envio de uma mensagem aos nódulos através de uma rede.
[070] Em (508), é feita uma determinação de que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações. Em alguns casos, a determinação de que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações inclui a determinação de que todas as transações na pluralidade de transações foram incluídas em um ou mais blocos armazenados em uma blockchain mantida pela rede blockchain.
[071] Em (510), em resposta à determinação de que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações, os nódulos da rede blockchain são instruídos a executar o chamado de contrato inteligente que não inclui uma lista de permissões.
[072] A Figura 6 ilustra os exemplos de módulos de um aparelho (600) de acordo com as implementações desta especificação. O aparelho (500) pode ser um exemplo de implementação de um aparelho configurado para possibilitar a execução paralela de transações em uma rede blockchain, tal como uma rede blockchain de consórcio. O aparelho (600) pode corresponder às implementações descritas acima, e o aparelho (600) inclui o seguinte: um primeiro identificador ou primeira unidade de identificação (602) identificando uma pluralidade de transações a serem executadas na blockchain, em que as transações são ordenadas em uma ordem de execução, em que as transações incluem um ou mais chamados de contrato inteligente para os contratos inteligentes, cada um possui uma lista de permissões identificando uma ou mais contas que estão autorizadas a executar o contrato inteligente e em que a ordem de execução inclui um chamado de contrato inteligente para um contrato inteligente que não possui uma lista de permissões ordenado após a pluralidade de transações; um segundo identificador ou segunda unidade de identificação (604) para a identificação dos grupos de transações dentro da pluralidade de transações, em que as transações em cada grupo estão associadas a um conjunto especial de contas na rede blockchain, e em que o conjunto especial de contas associado a cada um dos um ou mais chamados de contrato inteligente é determinado com base na lista de permissões associada ao chamado de contrato inteligente; um primeiro instrutor ou primeira unidade de instrução (606) para a instrução dos nódulos da rede blockchain para executar cada um dos grupos de transações em paralelo, em que a execução de cada grupo de transações inclui a execução das transações dentro do grupo em série e de acordo com a ordem de execução; um determinador ou unidade de determinação (608) para a determinação que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações; e um segundo instrutor ou segunda unidade de instrução (610) para a instrução dos nódulos da rede blockchain para executar o chamado de contrato inteligente que não inclui uma lista de permissões em resposta, a determinação que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações.
[073] O sistema, aparelho, módulo ou unidade ilustrados nas implementações anteriores pode ser implementado utilizando um chip de computador ou uma entidade, ou pode ser implementado utilizando um produto que possua uma função determinada. Um dispositivo de implementação típico é um computador, e o computador pode ser um computador pessoal, um computador portátil, um telefone celular, um celular com câmera, um smartphone, um assistente digital pessoal, um reprodutor de mídia, um dispositivo de navegação, um e-mail que recebe e envia o dispositivo, um console de jogos, um computador tablet, um dispositivo vestível ou uma combinação de qualquer um desses dispositivos.
[074] Para um processo de implementação de funções e funções de cada unidade no aparelho, podem ser executadas referências a um processo de implementação de etapas correspondentes no método anterior. Os detalhes são omitidos no presente para simplificar.
[075] Uma vez que uma implementação de aparelho basicamente corresponde a uma implementação de método, para as partes relacionadas, referências podem ser feitas às descrições relacionadas na implementação do método. A implementação do aparelho descrita anteriormente é meramente um exemplo. As unidades descritas como partes separadas podem ou não estar fisicamente separadas, e as partes exibidas como unidades podem ou não ser unidades físicas, podem estar localizadas em uma posição ou podem ser distribuídas em uma série de unidades de rede. Alguns ou todos os módulos podem ser selecionados com base nas demandas reais para alcançar os objetivos das soluções da especificação. Um técnico comum no assunto pode compreender e implementar as implementações da presente aplicação sem esforços criativos.
[076] Novamente com referência à Figura 6, pode ser interpretado como ilustrando um módulo funcional interno e uma estrutura de um aparelho para possibilitar a execução paralela de transações em uma rede blockchain. O aparelho de execução paralela pode ser um exemplo de um aparelho configurado para possibilitar a execução paralela de transações em uma rede blockchain.
[077] As implementações do assunto e as ações e operações descritas nesta especificação podem ser implementadas em circuitos eletrônicos digitais, em software de computador ou firmware corporificados de maneira tangível, em hardware de computador, incluindo as estruturas descritas nesta especificação e seus equivalentes estruturais, ou em combinações de um ou mais deles. As implementações do assunto descrito nesta especificação podem ser implementadas como um ou mais programas de computador, por exemplo, um ou mais módulos de instruções de programas de computador, codificados em um transportador de programa de computador, para a execução ou controle da operação de aparelho de processamento de dados. O transportador pode ser um meio de armazenamento de computador não transitório tangível. De maneira alternativa, ou adicional, o transportador pode ser um sinal propagado gerado artificialmente, por exemplo, um sinal elétrico, ótico ou eletromagnético gerado pela máquina que é gerado para codificar a informação para a transmissão para um aparelho receptor adequado para a execução por um aparelho de processamento de dados. O meio de armazenamento de computador pode ser ou ser parte de um dispositivo de armazenamento legível por máquina, um substrato de armazenamento legível por máquina, um dispositivo de memória de acesso aleatório ou serial, ou uma combinação de um ou mais deles. Um meio de armazenamento de computador não é um sinal propagado.
[078] O termo "aparelho de processamento de dados" engloba todos os tipos de aparelhos, dispositivos e máquinas para o processamento de dados, incluindo, por exemplo, um processador programável, um computador ou múltiplos processadores ou computadores. O aparelho de processamento de dados pode incluir os circuitos lógicos para fins especiais, por exemplo, um FPGA (Field Programmable Gate Array), um ASIC (circuito integrado específico de aplicativos) ou uma GPU (unidade de processamento gráfico). O equipamento também pode incluir, além do hardware, o código que cria um ambiente de execução para os programas de computador, por exemplo, o código que constitui o firmware do processador, uma pilha de protocolos, um sistema de gerenciamento de banco de dados, um sistema operacional ou uma combinação de um ou mais deles.
[079] Um programa de computador, que também pode ser referido ou descrito como um programa, software, um aplicativo de software, um aplicativo, um módulo, um módulo de software, um motor, um script ou código, pode ser escrito em qualquer forma de linguagem de programação, incluindo as linguagens compiladas ou interpretadas, linguagens declarativas ou procedimentais, e pode ser implantado de qualquer maneira, incluindo tal como um programa independente ou como um módulo, componente, mecanismo, sub- rotina ou outra unidade adequada para a execução em um ambiente de computação, cujo ambiente pode incluir um ou mais computadores interconectados por uma comunicação de dados. rede em um ou mais locais.
[080] Um programa de computador pode, mas não precisa, corresponder a um arquivo em um sistema de arquivos. Um programa de computador pode ser armazenado em uma parte de um arquivo que contém outros programas ou dados, por exemplo, um ou mais scripts armazenados em um documento de linguagem de marcação, em um único arquivo dedicado ao programa em questão, ou em múltiplos arquivos coordenados, por exemplo, os arquivos que armazenam um ou mais módulos, subprogramas ou partes do código.
[081] Os processos e fluxos lógicos descritos nesta especificação podem ser realizados por um ou mais computadores que executam um ou mais programas de computador para a realização de operações operando em relação aos dados de entrada e gerando a saída. Os processos e fluxos lógicos também podem ser realizados por circuitos lógicos de propósito especial, por exemplo, um FPGA, um ASIC ou uma GPU, ou por uma combinação de circuitos lógicos de propósito especial e um ou mais computadores programados.
[082] Os computadores adequados para a execução de um programa de computador podem ser com base em microprocessadores de utilização geral ou especial ou em ambos ou qualquer outro tipo de unidade de processamento central. Em geral, uma unidade de processamento central irá receber as instruções e os dados de uma memória somente de leitura ou de uma memória de acesso aleatório ou ambas. Os elementos de um computador podem incluir uma unidade de processamento central para a execução de instruções e um ou mais dispositivos de memória para armazenar as instruções e os dados.
A unidade de processamento central e a memória podem ser complementadas por, ou incorporadas em circuitos lógicos de propósito especial.
[083] Em geral, um computador será acoplado a, pelo menos, um meio de armazenamento legível por computador não transitório (também referido como uma memória legível por computador). O meio de armazenamento acoplado ao computador pode ser um componente interno do computador (por exemplo, um disco rígido integrado) ou um componente externo (por exemplo, o disco rígido de barramento serial universal (USB) ou um sistema de armazenamento acessado através de uma rede). Os exemplos de mídia de armazenamento podem incluir, por exemplo, os discos magnéticos, magneto- óticos ou óticos, unidades de estado sólido, recursos de armazenamento de rede, tais como os sistemas de armazenamento em nuvem ou outros tipos de mídia de armazenamento. No entanto, um computador não precisa possuir esses dispositivos. Além disso, um computador pode ser incorporado em outro dispositivo, por exemplo, um telefone celular, um assistente digital pessoal (PDA), um tocador de áudio ou vídeo, um console de jogos, um receptor GPS ou um dispositivo de armazenamento portátil, por exemplo, uma unidade flash de barramento serial universal (USB), para citar apenas alguns.
[084] Para fornecer a interação com um usuário, as implementações do assunto descrito nesta especificação podem ser implementadas em, ou configuradas para se comunicar com um computador que possui um dispositivo de exibição, por exemplo, um monitor LCD (monitor de cristal líquido), para exibir as informações para o usuário e um dispositivo de entrada pelo qual o usuário pode fornecer a entrada para o computador, por exemplo, um teclado e um dispositivo apontador, por exemplo, um mouse, um trackball ou touchpad. Outros tipos de dispositivos também podem ser utilizados para fornecer a interação com um usuário; por exemplo, o feedback fornecido ao usuário pode ser qualquer forma de feedback sensorial, por exemplo, o feedback visual, feedback auditivo ou feedback tátil; e a entrada do usuário pode ser recebida de qualquer forma, incluindo a entrada acústica, de fala ou tátil. Além disso, um computador pode interagir com um usuário enviando os documentos e recebendo os documentos de um dispositivo utilizado pelo usuário; por exemplo, enviando as páginas da web para um navegador da web no dispositivo de um usuário em resposta às solicitações recebidas do navegador da web ou interagindo com um aplicativo executado em um dispositivo de usuário, por exemplo, um smartphone ou tablet eletrônico. Além disso, um computador pode interagir com um usuário enviando as mensagens de texto ou outras formas de mensagem para um dispositivo pessoal, por exemplo, um smartphone que está executando um aplicativo de mensagens e recebendo as mensagens responsivas do usuário em troca.
[085] Esta especificação utiliza o termo “configurado para” em conexão aos sistemas, aparelhos e componentes de programas de computador.
Para que um sistema de um ou mais computadores seja configurado para a execução de operações ou ações específicas significa que o sistema instalou nele o software, firmware, hardware ou uma combinação deles que, em operação, fazem com que o sistema execute as operações ou ações. Para um ou mais programas de computador a serem configurados para a execução de operações ou ações específicas significa que um ou mais programas incluem as instruções que, quando executadas pelo aparelho de processamento de dados, ocasionam que o aparelho execute as operações ou ações. Para os circuitos lógicos com propósito especial a serem configurados para a execução de operações ou ações específicas significa que o circuito possui lógica eletrônica que realiza as operações ou ações.
[086] Embora esta especificação contenha muitos detalhes específicos de implementação, estes não devem ser interpretados como limitações no âmbito de qualquer invenção ou no âmbito do que pode ser reivindicado, mas como descrições de características que podem ser específicas para as implementações específicas de determinadas invenções. Determinadas características descritas na presente invenção no contexto de implementações separadas também podem ser implementadas, em combinação, em uma única implementação. Por outro lado, diversas características descritas no contexto de uma única implementação também podem ser implementadas em diversas implementações, separadamente ou em qualquer subcombinação adequada.
Além disso, embora as características descritas anteriormente possam estar descritas como atuando em determinadas combinações e até mesmo inicialmente reivindicadas como tal, uma ou mais características de uma combinação reivindicada, em alguns casos, podem ser excisadas da combinação, e a combinação reivindicada pode ser direcionada a uma subcombinação ou variação de uma subcombinação.
[087] De maneira similar, embora as operações sejam representadas nos desenhos ou reivindicações em uma ordem específica especial, isso não deve ser entendido como exigindo que tais operações sejam executadas na ordem especial mostrada ou em ordem sequencial, ou que todas as operações ilustradas sejam executadas, para alcançar os resultados desejados. Em determinadas circunstâncias, o processamento multitarefa ou paralelo podem ser vantajosos. Além disso, a separação ou integração de diversos módulos e componentes do sistema nas implementações descritas anteriormente não devem ser entendidas como exigindo tal separação ou integração em todas as implementações, e deve ser entendido que os componentes e sistemas do programa descritos, em geral, podem ser integrados em conjunto um único produto de software ou empacotados em diversos produtos de software.
[088] As implementações específicas do assunto foram descritas.
Outras implementações estão dentro do escopo das seguintes reivindicações.
Por exemplo, as ações citadas nas reivindicações podem ser executadas em uma ordem diferente e ainda alcançar os resultados desejáveis. Como um exemplo, os processos representados nas figuras anexas não requerem necessariamente a ordem especial mostrada, ou ordem sequencial, para alcançar os resultados desejados. Em alguns casos, o processamento multitarefa ou paralelo podem ser vantajosos.

Claims (20)

REIVINDICAÇÕES
1. MÉTODO IMPLEMENTADO POR COMPUTADOR para a execução paralela de transações em uma rede blockchain, o método caracterizado por compreender: - a identificação de uma pluralidade de transações a serem executadas na blockchain, em que as transações são ordenadas em uma ordem de execução, em que as transações incluem um ou mais chamados de contrato inteligente para os contratos inteligentes, cada uma possui uma lista de permissões que identifica uma ou mais contas autorizadas a executar o contrato inteligente, e em que a ordem de execução inclui um chamado de contrato inteligente para um contrato inteligente que não possui uma lista de permissões ordenada após a pluralidade de transações; - a identificação dos grupos de transações dentro da pluralidade de transações, em que as transações em cada grupo estão associadas a um conjunto especial de contas na rede blockchain e em que o conjunto especial de contas associadas a cada um ou mais chamados de contrato inteligente está determinado com base na lista de permissões associada ao chamado de contrato inteligente; - a instrução dos nódulos da rede blockchain para executar cada um dos grupos de transações em paralelo, em que a execução de cada grupo de transações inclui a execução das transações dentro do grupo em série e de acordo com a ordem de execução; - a determinação que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações; e - em resposta, a determinação que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações, a instrução dos nódulos da rede blockchain para executar o chamado de contrato inteligente que não inclui uma lista de permissões.
2. MÉTODO, de acordo com a reivindicação 1, caracterizado pela instrução dos nódulos da rede blockchain para executar cada um dos grupos de transações em paralelo inclui a instrução de um primeiro conjunto de nódulos para executar um primeiro grupo de transações e a instrução de um primeiro conjunto de nódulos para executar um segundo grupo de transações.
3. MÉTODO, de acordo com a reivindicação 1, caracterizado pela determinação que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações inclui a determinação que todas as transações na pluralidade de transações foram incluídas em um ou mais blocos armazenados em uma blockchain mantida pela rede blockchain.
4. MÉTODO, de acordo com a reivindicação 1, caracterizado pela instrução dos nódulos da rede blockchain para executar cada um dos grupos de transações em paralelo inclui o envio de uma mensagem aos nódulos através de uma rede.
5. MÉTODO, de acordo com a reivindicação 1, caracterizado pela identificação de a pluralidade de transações a serem executadas na blockchain inclui o recebimento das transações transmitidas para a rede blockchain.
6. MÉTODO, de acordo com a reivindicação 1, caracterizado pela lista de autorizações está incluída em um conjunto de instruções executáveis associadas a cada contrato inteligente.
7. MÉTODO, de acordo com a reivindicação 1, caracterizado pela lista de permissões está separada de um conjunto de instruções executáveis associadas a cada contrato inteligente.
8. MÉTODO, de acordo com a reivindicação 1, caracterizado pela lista de permissões inclui uma identificação de uma ou mais contas que estão autorizadas a acessar cada contrato inteligente.
9. MÉTODO, de acordo com a reivindicação 1, caracterizado pela lista de permissões inclui uma referência a uma localização externa a cada contrato inteligente que armazena uma ou mais contas que estão autorizadas a acessar cada contrato inteligente.
10. MEIO DE ARMAZENAMENTO NÃO TRANSITÓRIO LEGÍVEL POR COMPUTADOR, acoplado a um ou mais computadores e que possui armazenado nele as instruções que são executáveis por um ou mais computadores caracterizados pela: - a identificação de uma pluralidade de transações a serem executadas na blockchain, em que as transações são ordenadas em uma ordem de execução, em que as transações incluem um ou mais chamados de contrato inteligente para os contratos inteligentes, cada um possui uma lista de permissões identificando uma ou mais contas que estão autorizadas a executar o contrato inteligente, e em que a ordem de execução inclui um chamado de contrato inteligente para um contrato inteligente que não possui uma lista de permissões ordenada após a pluralidade de transações; - a identificação dos grupos de transações dentro da pluralidade de transações, em que as transações em cada grupo estão associadas a um conjunto especial de contas na rede blockchain, e em que o conjunto especial de contas associadas a cada um ou mais chamados de contrato inteligente é determinado com base na lista de permissões associada ao chamado de contrato inteligente; - a instrução dos nódulos da rede blockchain para executar cada um dos grupos de transações em paralelo, em que a execução de cada grupo de transações inclui a execução das transações dentro do grupo em série e de acordo com a ordem de execução; - a determinação que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações; e - em resposta, a determinação que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações, a instrução dos nódulos da rede blockchain para executar o chamado de contrato inteligente que não inclui uma lista de permissões.
11. MEIO DE ARMAZENAMENTO LEGÍVEL POR COMPUTADOR NÃO TRANSITÓRIO, de acordo com a reivindicação 10, caracterizado pela instrução dos nódulos da rede blockchain para executar cada um dos grupos de transações em paralelo inclui a instrução de um primeiro conjunto de nódulos para executar um primeiro grupo de transações e a instrução de um primeiro conjunto de nódulos para executar um segundo grupo de transações.
12. MEIO DE ARMAZENAMENTO LEGÍVEL POR COMPUTADOR NÃO TRANSITÓRIO, de acordo com a reivindicação 10, caracterizado pela determinação que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações inclui a determinação que todas as transações na pluralidade de transações foram incluídas em um ou mais blocos armazenados em uma blockchain mantida pela rede blockchain.
13. MEIO DE ARMAZENAMENTO LEGÍVEL POR COMPUTADOR NÃO TRANSITÓRIO, de acordo com a reivindicação 10, caracterizado pela instrução dos nódulos da rede blockchain para executar cada um dos grupos de transações em paralelo inclui o envio de uma mensagem aos nódulos através de uma rede.
14. MEIO DE ARMAZENAMENTO LEGÍVEL POR COMPUTADOR NÃO TRANSITÓRIO, de acordo com a reivindicação 10, caracterizado pela identificação da pluralidade de transações a serem executadas na blockchain inclui o recebimento das transações transmitidas para a rede blockchain.
15. MEIO DE ARMAZENAMENTO LEGÍVEL POR COMPUTADOR NÃO TRANSITÓRIO, de acordo com a reivindicação 10, caracterizado pela lista de permissão está incluída em um conjunto de instruções executáveis associadas a cada contrato inteligente.
16. MEIO DE ARMAZENAMENTO LEGÍVEL POR COMPUTADOR
NÃO TRANSITÓRIO, de acordo com a reivindicação 10, caracterizado pela lista de permissões está separada de um conjunto de instruções executáveis associadas a cada contrato inteligente.
17. MEIO DE ARMAZENAMENTO LEGÍVEL POR COMPUTADOR NÃO TRANSITÓRIO, de acordo com a reivindicação 10, caracterizado pela lista de permissões inclui uma identificação de uma ou mais contas que estão autorizadas a acessar cada contrato inteligente.
18. MEIO DE ARMAZENAMENTO LEGÍVEL POR COMPUTADOR NÃO TRANSITÓRIO, de acordo com a reivindicação 10, caracterizado pela lista de permissões inclui uma referência a uma localização externa a cada contrato inteligente que armazena uma ou mais contas que estão autorizadas a acessar cada contrato inteligente.
19. SISTEMA caracterizado por compreender: - um ou mais computadores; e - uma ou mais memórias legíveis por computador acopladas a um ou mais computadores e que possui armazenado nele as instruções que são executáveis por um ou mais computadores para: - a identificação de uma pluralidade de transações a serem executadas na blockchain, em que as transações são ordenadas em uma ordem de execução, em que as transações incluem um ou mais chamados de contrato inteligente para os contratos inteligentes, cada um possui uma lista de permissões identificando uma ou mais contas que estão autorizadas a executar o contrato inteligente, e em que a ordem de execução inclui um chamado de contrato inteligente para um contrato inteligente que não possui uma lista de permissões ordenada após a pluralidade de transações; - a identificação dos grupos de transações dentro da pluralidade de transações, em que as transações em cada grupo estão associadas a um conjunto especial de contas na rede blockchain, e em que o conjunto especial de contas associadas a cada um ou mais chamados de contrato inteligente é determinado com base na lista de permissões associada ao chamado de contrato inteligente; - a instrução dos nódulos da rede blockchain para executar cada um dos grupos de transações em paralelo, em que a execução de cada grupo de transações inclui a execução das transações dentro do grupo em série e de acordo com a ordem de execução; - a determinação que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações; e - e m resposta, a determinação que os nódulos da rede blockchain concluíram a execução de todos os grupos de transações, a instrução dos nódulos da rede blockchain para executar o chamado de contrato inteligente que não inclui uma lista de permissões.
20. SISTEMA, de acordo com a reivindicação 19, caracterizado pela instrução dos nódulos da rede blockchain para executar cada um dos grupos de transações em paralelo inclui a instrução de um primeiro conjunto de nódulos para executar um primeiro grupo de transações e a instrução de um primeiro conjunto de nódulos para executar um segundo grupo de transações.
BR112019016290-9A 2018-12-28 2018-12-28 método implementado por computador, meio de armazenamento não transitório legível por computador e sistema BR112019016290A2 (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/124873 WO2019072305A2 (en) 2018-12-28 2018-12-28 PARALLEL EXECUTION OF TRANSACTIONS IN A BLOCK CHAIN NETWORK BASED ON WHITE LISTS OF INTELLIGENT CONTRACTS

Publications (1)

Publication Number Publication Date
BR112019016290A2 true BR112019016290A2 (pt) 2021-07-20

Family

ID=66100122

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112019016290-9A BR112019016290A2 (pt) 2018-12-28 2018-12-28 método implementado por computador, meio de armazenamento não transitório legível por computador e sistema

Country Status (17)

Country Link
US (2) US10911461B2 (pt)
EP (1) EP3566391B1 (pt)
JP (1) JP7012730B2 (pt)
KR (1) KR102294223B1 (pt)
CN (1) CN110300985B (pt)
AU (1) AU2018347205C1 (pt)
BR (1) BR112019016290A2 (pt)
CA (1) CA3052884C (pt)
ES (1) ES2879907T3 (pt)
MX (1) MX2019009344A (pt)
MY (1) MY201623A (pt)
PH (1) PH12019501847A1 (pt)
PL (1) PL3566391T3 (pt)
RU (1) RU2731417C1 (pt)
SG (1) SG11201907243UA (pt)
WO (1) WO2019072305A2 (pt)
ZA (1) ZA201905218B (pt)

Families Citing this family (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11243810B2 (en) * 2018-06-06 2022-02-08 The Bank Of New York Mellon Methods and systems for improving hardware resiliency during serial processing tasks in distributed computer networks
US11405182B2 (en) 2018-12-03 2022-08-02 Ebay Inc. Adaptive security for smart contracts using high granularity metrics
US11250125B2 (en) 2018-12-03 2022-02-15 Ebay Inc. Highly scalable permissioned block chains
US11263315B2 (en) 2018-12-03 2022-03-01 Ebay Inc. System level function based access control for smart contract execution on a blockchain
CN118196938A (zh) * 2018-12-06 2024-06-14 开利公司 由区块链支持的智能锁***
JP6816300B2 (ja) 2018-12-28 2021-01-20 アドバンスド ニュー テクノロジーズ カンパニー リミテッド ブロックチェーンネットワークにおけるトランザクションの並列実行
EP3566391B1 (en) * 2018-12-28 2021-04-21 Advanced New Technologies Co., Ltd. Parallel execution of transactions in a blockchain network based on smart contract whitelists
SG11201910057QA (en) 2019-04-12 2019-11-28 Alibaba Group Holding Ltd Performing parallel execution of transactions in a distributed ledger system
CA3060790C (en) 2019-04-12 2021-06-08 Alibaba Group Holding Limited Performing parallel execution of transactions in a distributed ledger system
SG11202000784SA (en) * 2019-04-30 2020-02-27 Alibaba Group Holding Ltd Methods and devices for managing access to account in blockchain system
SG11201910069YA (en) 2019-04-30 2019-11-28 Alibaba Group Holding Ltd Method and device for avoiding double-spending problem in read-write set-model-based blockchain technology
CN110175844A (zh) * 2019-05-07 2019-08-27 深圳前海微众银行股份有限公司 一种区块链中智能合约的发布方法及装置
WO2021032115A1 (zh) * 2019-08-19 2021-02-25 杭州趣链科技有限公司 智能合约并行执行的方法、装置、设备和介质
CN110968437A (zh) * 2019-11-27 2020-04-07 杭州趣链科技有限公司 一种基于Java智能合约的单个合约并行执行的方法、装置、设备及介质
US10783082B2 (en) * 2019-08-30 2020-09-22 Alibaba Group Holding Limited Deploying a smart contract
KR102304953B1 (ko) * 2019-08-30 2021-09-27 주식회사 미디움 피어 노드와 그 정보 처리 방법 및 블록체인 플랫폼 시스템
US11768701B2 (en) * 2019-09-17 2023-09-26 Western Digital Technologies, Inc. Exception analysis for data storage devices
CN110691122B (zh) * 2019-09-23 2022-04-05 杭州复杂美科技有限公司 平行链共识方法、设备及存储介质
DE102019216744A1 (de) * 2019-10-30 2021-05-06 Robert Bosch Gmbh Granulare Speicherverwaltung für einen Distributed Ledger
KR102342788B1 (ko) * 2019-11-19 2021-12-24 한양대학교 산학협력단 트랜잭션의 병렬적 실행을 지원하는 방법, 이를 이용하는 블록체인 노드 및 프로그램
US11387979B2 (en) 2019-12-23 2022-07-12 International Business Machines Corporation Partially-ordered blockchain
CN111294234B (zh) * 2020-01-17 2022-07-29 麦科思(苏州)数据科技有限公司 一种基于智能合约优化模型的并行区块链分片方法
CN111339108A (zh) * 2020-02-18 2020-06-26 杭州复杂美科技有限公司 一种交易并行执行方法、设备及存储介质
CN111414374B (zh) * 2020-03-20 2023-04-28 深圳市迅雷网络技术有限公司 一种区块链交易并发处理方法、装置及设备
CN111325928B (zh) * 2020-04-01 2021-12-21 中国银行股份有限公司 银行自助设备的业务执行方法及装置
CN111563820B (zh) * 2020-05-08 2023-09-22 中国工商银行股份有限公司 智能合约并行执行方法及装置
CN111339208B (zh) * 2020-05-15 2020-08-25 支付宝(杭州)信息技术有限公司 调用智能合约的方法及装置
CN111754350B (zh) 2020-08-28 2020-11-24 支付宝(杭州)信息技术有限公司 并行获取区块链中的交易访问变量的编号的方法和装置
CN111754349B (zh) 2020-08-28 2020-12-04 支付宝(杭州)信息技术有限公司 对区块链中的交易进行分组的方法和装置
CN111770202B (zh) 2020-08-31 2021-10-29 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111770204B (zh) 2020-08-31 2021-10-22 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111768183B (zh) 2020-08-31 2024-04-19 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和存储介质
CN111768184A (zh) * 2020-08-31 2020-10-13 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法及区块链节点
CN111770113B (zh) * 2020-08-31 2021-07-30 支付宝(杭州)信息技术有限公司 一种执行智能合约的方法、区块链节点和节点设备
CN113191895B (zh) * 2020-09-04 2022-04-26 支付宝(杭州)信息技术有限公司 一种交易执行方法、***及装置
CN113454597A (zh) 2020-09-28 2021-09-28 支付宝(杭州)信息技术有限公司 区块链交易处理***和方法
KR102286473B1 (ko) * 2020-10-14 2021-08-06 (주)헥슬란트 가상 자산 검증 모듈, 이를 포함하는 가상 자산 거래 시스템 및 그 방법
US11194791B1 (en) * 2020-10-23 2021-12-07 Coinbase Crypto Services, LLC. Blockchain orchestrator computer system
CN113205424B (zh) * 2020-10-28 2023-08-25 支付宝(杭州)信息技术有限公司 在区块链中部署和调用合约的方法和装置
CN112465514A (zh) * 2020-12-08 2021-03-09 苏州域乎区块链科技有限公司 一种基于区块链的分层式交易并行执行方法及***
CN112748994B (zh) * 2020-12-31 2023-11-28 上海简苏网络科技有限公司 一种区块链交易并行处理方法及***
CN112764897B (zh) * 2020-12-31 2024-03-22 杭州趣链科技有限公司 任务请求的处理方法、装置、***及计算机可读存储介质
US11829765B2 (en) 2021-03-31 2023-11-28 International Business Machines Corporation Computer mechanism for analytic orchestration and entitled execution
WO2023277553A1 (ko) * 2021-06-30 2023-01-05 주식회사 아티프렌즈 블록체인 네트워크에서의 트랜잭션의 처리 속도 향상 방법
US11936794B2 (en) * 2021-09-16 2024-03-19 Masterard International Incorporated Method and system for parallel processing of smart contracts in permissioned blockchains
CN113869902A (zh) * 2021-12-03 2021-12-31 深圳前海微众银行股份有限公司 一种区块链交易执行方法及装置
CN114285632B (zh) * 2021-12-23 2023-07-28 成都质数斯达克科技有限公司 一种区块链数据传输方法、装置和设备及可读存储介质
CN116382815B (zh) * 2023-06-05 2023-10-10 安徽中科晶格技术有限公司 基于dag模型的合约并行化方法
CN117422468B (zh) * 2023-12-18 2024-03-29 安徽中科晶格技术有限公司 基于dag模型的合约链合约并行化方法、设备及存储介质

Family Cites Families (53)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7401235B2 (en) 2002-05-10 2008-07-15 Microsoft Corporation Persistent authorization context based on external authentication
CN102915421B (zh) * 2011-08-04 2013-10-23 腾讯科技(深圳)有限公司 文件的扫描方法及***
US9870310B1 (en) * 2013-11-11 2018-01-16 Amazon Technologies, Inc. Data providers for annotations-based generic load generator
RU2670029C2 (ru) * 2014-06-03 2018-10-17 Общество С Ограниченной Ответственностью "Яндекс" Система и способ автоматической модерации сообщений
US10095549B1 (en) * 2015-09-29 2018-10-09 Amazon Technologies, Inc. Ownership transfer account service in a virtual computing environment
EP4375908A1 (en) * 2015-10-17 2024-05-29 Banqu, Inc. Blockchain-based identity and transaction platform
US20170132615A1 (en) * 2015-11-11 2017-05-11 Bank Of America Corporation Block chain alias for person-to-person payments
US10432471B2 (en) * 2015-12-31 2019-10-01 Microsoft Technology Licensing, Llc Distributed computing dependency management system
EP3193299A1 (en) * 2016-01-15 2017-07-19 Accenture Global Services Limited Device, method and system for autonomous selection of a commodity supplier through a blockchain distributed database
US10255108B2 (en) 2016-01-26 2019-04-09 International Business Machines Corporation Parallel execution of blockchain transactions
US10720232B2 (en) * 2016-04-13 2020-07-21 Accenture Global Solutions Limited Distributed healthcare records management
US10046228B2 (en) * 2016-05-02 2018-08-14 Bao Tran Smart device
CA3027630A1 (en) * 2016-07-01 2018-01-04 Wells Fargo Bank, N.A. International trade finance blockchain system
US10425399B2 (en) 2016-07-12 2019-09-24 International Business Machines Corporation Template-based distributed certificate issuance in a multi-tenant environment
US10417217B2 (en) * 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
WO2018031551A1 (en) * 2016-08-08 2018-02-15 The Dun & Bradstreet Corporation Trusted platform and integrated bop applications for networking bop components
US11146535B2 (en) * 2016-10-12 2021-10-12 Bank Of America Corporation System for managing a virtual private ledger and distributing workflow of authenticated transactions within a blockchain distributed network
US20180158034A1 (en) 2016-12-07 2018-06-07 International Business Machines Corporation Dynamic reordering of blockchain transactions to optimize performance and scalability
US11200966B2 (en) 2016-12-27 2021-12-14 Cerner Innovation, Inc. Healthcare system based on devices and wearables
CN108269072A (zh) * 2016-12-30 2018-07-10 深圳瀚德创客金融投资有限公司 用于区块链的交易处理方法和网络节点
KR102470727B1 (ko) * 2016-12-30 2022-11-25 비씨 디벨롭먼트 랩스 게엠베하 블록체인 가능한 서비스 제공자 시스템
CN106980649B (zh) * 2017-02-28 2020-07-10 创新先进技术有限公司 写入区块链业务数据的方法和装置及业务子集合确定方法
CN106878000B (zh) * 2017-03-06 2020-02-21 中钞***产业发展有限公司杭州区块链技术研究院 一种联盟链共识方法及***
CN106934710A (zh) * 2017-03-06 2017-07-07 钱德君 一种基于智能合约内容的量子合约账本
US10489597B2 (en) * 2017-03-28 2019-11-26 General Electric Company Blockchain verification of network security service
GB201707296D0 (en) 2017-05-08 2017-06-21 Nchain Holdings Ltd Computer-implemented system and method
US10341105B2 (en) * 2017-06-07 2019-07-02 At&T Intellectual Property I, L.P. Blockchain-based social media history maps
AU2018289562A1 (en) * 2017-06-22 2020-01-16 Jpmorgan Chase Bank, N.A. System and method for implementing an interbank information network
US10679210B2 (en) 2017-06-26 2020-06-09 International Business Machines Corporation Blockchain transaction commitment ordering
US10616324B1 (en) * 2017-07-20 2020-04-07 Architecture Technology Corporation Decentralized ledger system and method for enterprises
US11196552B2 (en) * 2017-08-04 2021-12-07 Truss Financial, LLC Secure data distribution protocol using blockchains
CN107688999B (zh) 2017-08-11 2020-11-13 杭州溪塔科技有限公司 一种基于区块链的并行交易执行方法
US20190087793A1 (en) * 2017-08-31 2019-03-21 Brown University Adding concurrency to smart contracts
US11132451B2 (en) * 2017-08-31 2021-09-28 Parity Technologies Ltd. Secret data access control systems and methods
RU2673399C1 (ru) * 2017-09-07 2018-11-26 Олег Александрович Серебренников Способ сохранения покупательной способности сбережений
CN107678865A (zh) * 2017-09-20 2018-02-09 中国银行股份有限公司 基于交易分组的区块链的验证方法以及***
WO2019067603A1 (en) * 2017-09-27 2019-04-04 Securrency, Inc. METHOD, APPARATUS, AND COMPUTER-READABLE MEDIUM FOR CONFORMITY-SENSITIVE TOKENIZATION AND ASSET VALUE CONTROL
US11100483B2 (en) * 2017-09-29 2021-08-24 Intel Corporation Hierarchical data information
CN107704269A (zh) 2017-10-16 2018-02-16 中国银行股份有限公司 一种基于区块链生成区块的方法以及***
US11823178B2 (en) * 2017-11-17 2023-11-21 International Business Machines Corporation Optimization of high volume transaction performance on a blockchain
TWI677213B (zh) * 2017-11-23 2019-11-11 財團法人資訊工業策進會 監控裝置、方法及其電腦程式產品
JP2019125914A (ja) * 2018-01-16 2019-07-25 アラクサラネットワークス株式会社 通信装置及びプログラム
US10373158B1 (en) * 2018-02-12 2019-08-06 Winklevoss Ip, Llc System, method and program product for modifying a supply of stable value digital asset tokens
US10540654B1 (en) * 2018-02-12 2020-01-21 Winklevoss Ip, Llc System, method and program product for generating and utilizing stable value digital assets
CN108848119B (zh) * 2018-04-03 2020-04-28 阿里巴巴集团控股有限公司 跨区块链的交互方法及装置、***、电子设备
RU181439U1 (ru) * 2018-04-06 2018-07-13 Оксана Валерьевна Кириченко Децентрализованная технологическая платформа хранения и обмена данными транзакций в распределенной вычислительной сети
CN108681565B (zh) 2018-04-28 2020-11-10 百度在线网络技术(北京)有限公司 区块链数据并行处理方法、装置、设备和存储介质
CN108769173B (zh) * 2018-05-21 2021-11-09 阿里体育有限公司 运行智能合约的区块链实现方法及设备
CN108846659B (zh) 2018-06-13 2021-09-14 深圳前海微众银行股份有限公司 基于区块链的转账方法、装置及存储介质
US11836721B2 (en) * 2018-06-29 2023-12-05 Intel Corporation Protection of information in an information exchange
CN109064171A (zh) 2018-07-26 2018-12-21 杭州秘猿科技有限公司 一种区块链并行交易的方法、装置及电子***
JP6816300B2 (ja) 2018-12-28 2021-01-20 アドバンスド ニュー テクノロジーズ カンパニー リミテッド ブロックチェーンネットワークにおけるトランザクションの並列実行
EP3566391B1 (en) * 2018-12-28 2021-04-21 Advanced New Technologies Co., Ltd. Parallel execution of transactions in a blockchain network based on smart contract whitelists

Also Published As

Publication number Publication date
EP3566391A2 (en) 2019-11-13
MX2019009344A (es) 2019-10-02
US20210160245A1 (en) 2021-05-27
SG11201907243UA (en) 2019-09-27
WO2019072305A2 (en) 2019-04-18
RU2731417C1 (ru) 2020-09-02
AU2018347205B2 (en) 2021-02-25
PH12019501847A1 (en) 2020-03-09
US10911461B2 (en) 2021-02-02
EP3566391B1 (en) 2021-04-21
US20190281065A1 (en) 2019-09-12
EP3566391A4 (en) 2020-03-18
ES2879907T3 (es) 2021-11-23
CN110300985A (zh) 2019-10-01
JP2020518880A (ja) 2020-06-25
CA3052884C (en) 2022-05-17
AU2018347205A1 (en) 2020-07-16
ZA201905218B (en) 2020-05-27
WO2019072305A3 (en) 2019-10-24
AU2018347205C1 (en) 2021-08-12
KR102294223B1 (ko) 2021-08-30
US11381573B2 (en) 2022-07-05
CA3052884A1 (en) 2019-04-18
PL3566391T3 (pl) 2021-10-18
CN110300985B (zh) 2023-08-01
KR20200083938A (ko) 2020-07-09
JP7012730B2 (ja) 2022-01-28
MY201623A (en) 2024-03-06

Similar Documents

Publication Publication Date Title
BR112019016290A2 (pt) método implementado por computador, meio de armazenamento não transitório legível por computador e sistema
BR112019016064A2 (pt) Método implementado por computador, meio de armazenamento legível e sistema
JP6690066B2 (ja) パブリックサイドチェーンを使用してコンソーシアムブロックチェーンに記憶されたデータの完全性を検証すること
JP6892513B2 (ja) 信頼できる実行環境に基づいたオフチェーンスマートコントラクトサービス
BR112019016188A2 (pt) método implementado por computador para o controle do acesso aos contratos inteligentes, meio de armazenamento legível por computador não transitório e sistema
US11394584B2 (en) Asynchronous processing of blockchain blocks

Legal Events

Date Code Title Description
B25B Requested transfer of rights rejected

Owner name: ADVANCED NEW TECHNOLOGIES CO., LTD. (KY)

Free format text: INDEFERIDO O PEDIDO DE TRANSFERENCIA CONTIDO NA PETICAO 870200160142 DE 22/12/2020, EM VIRTUDE DO PEDIDO JA ESTAR EM NOME DO INTERESSADO.

B25B Requested transfer of rights rejected

Owner name: ADVANCED NEW TECHNOLOGIES CO., LTD. (KY)

Free format text: INDEFERIDO O PEDIDO DE TRANSFERENCIA CONTIDO NA PETICAO 870200160565 DE 23/12/2020, EM VIRTUDE DO PEDIDO JA ESTAR EM NOME DO INTERESSADO.

B09A Decision: intention to grant [chapter 9.1 patent gazette]
B11D Dismissal acc. art. 38, par 2 of ipl - failure to pay fee after grant in time