BR112020006828A2 - declarative smart contracts - Google Patents

declarative smart contracts Download PDF

Info

Publication number
BR112020006828A2
BR112020006828A2 BR112020006828-4A BR112020006828A BR112020006828A2 BR 112020006828 A2 BR112020006828 A2 BR 112020006828A2 BR 112020006828 A BR112020006828 A BR 112020006828A BR 112020006828 A2 BR112020006828 A2 BR 112020006828A2
Authority
BR
Brazil
Prior art keywords
block
invocation
fact
verifiers
execution
Prior art date
Application number
BR112020006828-4A
Other languages
Portuguese (pt)
Inventor
Silvio Micali
Original Assignee
Algorand Inc.
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 Algorand Inc. filed Critical Algorand Inc.
Priority claimed from PCT/US2018/054311 external-priority patent/WO2019070938A1/en
Publication of BR112020006828A2 publication Critical patent/BR112020006828A2/en

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

Trata-se da ação de fazer com que um bloco em uma cadeia de blocos seja adicionado à cadeia de blocos que inclui fazer com que uma entidade receba informações que correspondem a um bloco anterior, fazer com que a entidade receba uma invocação declarativa de uma execução de contrato inteligente em uma determinada entrada, em que a invocação declarativa declara resultados relevantes da execução e outros dados relevantes, fazer com que a entidade verifique a validade sintática da invocação, e fazer com que a entidade incorpore a invocação declarativa no bloco em resposta à verificação da validade sintática da invocação. Os resultados relevantes podem especificar efeitos líquidos da execução de contrato inteligente, um estado resultante do contrato inteligente após a execução e um número de etapas para a execução. Os outros dados relevantes podem especificar um chamador da invocação declarativa, informações sobre tempo, informações de bloco e/ou uma taxa pagável.It is the action of having a block in a chain of blocks added to the chain of blocks that includes making an entity receive information that corresponds to a previous block, causing the entity to receive a declarative invocation of an execution of a smart contract in a given entry, in which the declarative invocation declares relevant execution results and other relevant data, cause the entity to verify the syntactic validity of the invocation, and to cause the entity to incorporate the declarative invocation in the block in response verification of the syntactic validity of the invocation. Relevant results can specify net effects of smart contract execution, a state resulting from the smart contract after execution and a number of steps for execution. The other relevant data may specify a declarative invocation caller, time information, block information and / or a payable fee.

Description

Relatório descritivo da patente de invenção para “CONTRATOS INTELIGENTES DECLARATIVOS”Descriptive report of the invention patent for “DECLARATIVE INTELLIGENT CONTRACTS”

CAMPO DA TÉCNICATECHNICAL FIELD

[0001] Este pedido refere-se ao campo de transações eletrônicas e, mais particularmente, ao campo de segurança do conteúdo de sequências de blocos de transações para transações eletrônicas.[0001] This order refers to the field of electronic transactions and, more particularly, the field of content security of transaction block sequences for electronic transactions.

ANTECEDENTES DA INVENÇÃOBACKGROUND OF THE INVENTION

[0002] “Pode-se pensar em um contrato inteligente como um programa de computador que, de modo similar a um usuário, pode possuir seu próprio dinheiro. Tal contrato C pode ter seu próprio estado retido (computacional), possivelmente modificado após cada invocação, e seu próprio identificador: por exemplo, a sequência H(C), em que H é uma função hash. Por uma questão de simplicidade, denota-se esse identificador pelo próprio C. O leitor pode determinar facilmente quando C é o próprio programa ou seu identificador. De preferência, um contrato inteligente C é facilmente distinguível de um usuário comum. Para um jogador, significa um contrato inteligente ou um usuário comum.[0002] “One can think of a smart contract as a computer program that, similarly to a user, can own its own money. Such a C contract can have its own retained (computational) state, possibly modified after each invocation, and its own identifier: for example, the sequence H (C), where H is a hash function. For the sake of simplicity, this identifier is denoted by C. The reader can easily determine when C is the program itself or its identifier. Preferably, a C smart contract is easily distinguishable from an ordinary user. For a player, it means a smart contract or an ordinary user.

[0003] A execução de um contrato inteligente C pode ser invocada por um ou mais usuários adequados. Por uma questão de simplicidade, mas sem qualquer perda de generalidade pretendida, presume-se no presente documento que C seja invocado por um único usuário i.* 1 Afinal, quando C pode ser invocado por múltiplos usuários, muitas vezes um deles executa C primeiro, modificando seu estado retido, antes que outro usuário adequado invoque C. A ordem dos usuários adequados pode não importar, se C for sem estado. Caso contrário, mesmo que— diga- se — dois usuários adequados invoquem C ao mesmo tempo, é possível escolher uma ordem para as duas execuções e esperar a primeira “terminar” antes de executar a segunda. Aqueles versados na técnica podem perceber que é possível escrever C de modo que apenas se invocado por múltiplos usuários C seja realmente executado 'pelo sistema' e que também esses contratos possam ser manuseados pela presente tecnologia.[0003] The execution of a smart C contract can be invoked by one or more suitable users. For the sake of simplicity, but without any intended loss of generality, it is assumed in this document that C is invoked by a single user i. * 1 After all, when C can be invoked by multiple users, often one of them executes C first , modifying its retained state, before another suitable user invokes C. The order of the appropriate users may not matter, if C is stateless. Otherwise, even if - say - two suitable users invoke C at the same time, it is possible to choose an order for both executions and wait for the first one to "finish" before executing the second one. Those skilled in the art can realize that it is possible to write C so that only if invoked by multiple C users is actually executed 'by the system' and that these contracts can also be handled by the present technology.

[0004] “Considera-se um usuário com capacidade para invocar a execução do sistema de C. do sistema. O usuário i invoca C por meio de uma assinatura digital. Tal invocação assinada de i pode especificar, além de C, uma entrada, input, e uma taxa, fee. Será elaborado a seguir.[0004] “A user is considered capable of invoking the execution of the system C. of the system. User i invokes C through a digital signature. Such a signed invocation of i can specify, in addition to C, an input, input, and a fee, fee. It will be elaborated below.

[0005] *+inputdetalha uma entrada específica na qual executar C. Pode existir, certamente, entradas adicionais, como entradas padrão: por exemplo, o estado atual de C, Yc (que pode ser, de fato, considerado como uma entrada) e um estado global do sistema (por exemplo, a quantidade de propriedade de cada jogador em um determinado bloco).[0005] * + inputdetails a specific entry on which to run C. There may, of course, be additional entries, such as standard entries: for example, the current state of C, Yc (which can, in fact, be considered as an entry) and a global state of the system (for example, the amount of ownership of each player in a given block).

[0006] + fee inclui uma quantidade pagável por i para compensar o sistema pelo custo computacional incorrido para a execução de Cc.[0006] + fee includes an amount payable by i to compensate the system for the computational cost incurred for the execution of Cc.

[0007] —Ousuárioi, quando invoca C, também pode especificar algumas informações adicionais. Por exemplo, o mesmo pode especificar um determinado bloco - e, dessa forma, um determinado “instantâneo” na cadeia de blocos - ou que a execução do contrato C pode ter efeito em um determinado bloco ou intervalo de blocos. Adicionalmente, pode-se pensar que todo o histórico de cadeia de blocos até agora pode ser levado em consideração por C. Em suma, também pode existir entradas adicionais (e possivelmente implícitas).[0007] —User, when invoking C, can also specify some additional information. For example, it can specify a certain block - and, thus, a certain “snapshot” in the block chain - or that the execution of contract C can have an effect on a certain block or range of blocks. Additionally, it can be thought that the entire block chain history so far can be taken into account by C. In short, there may also be additional (and possibly implicit) entries.

[0008] Ataxatambém pode incluir a quantidade que i precisa pagar para incluir sua invocação, como qualquer outra transação, na cadeia de blocos. Porém, ignora-se essa última taxa tradicional a fim de focar no problema aliviado pela nova invenção.[0008] Atax can also include the amount i need to pay to include your invocation, like any other transaction, in the block chain. However, the latter traditional rate is ignored in order to focus on the problem alleviated by the new invention.

[00090] O número de etapas computacionais em uma execução de C depende da máquina na qual a execução é executada. Consequentemente, considera-se computar Cf(inputl em uma máquina (virtual) fixa M.[00090] The number of computational steps in a C execution depends on the machine on which the execution is performed. Consequently, it is considered to compute Cf (inputl in a fixed (virtual) machine M.

[0010] Uma execução de C gera, de modo geral, um novo estado retido y'c e aumenta ou diminui as quantidades pertencentes a alguns jogadores, x, y,..., respectivamente por: amount',> amounty,,...[0010] An execution of C generally generates a new retained state y'c and increases or decreases the quantities belonging to some players, x, y, ..., respectively by: amount ',> amounty ,,. ..

[0011] Ainvocação assinada de C do usuário i pode entrar na cadeia de blocos em um determinado bloco, apenas se |, nesse ponto, possui uma quantidade de dinheiro maior ou igual a taxa, a taxa especificada na invocação de |.[0011] The signed C invocation of user i can enter the chain of blocks in a given block, only if |, at that point, he has an amount of money greater than or equal to the rate, the rate specified in the invocation of |.

[0012] Os métodos tradicionais (por exemplo, nonces) são usados para impedir que uma invocação realmente corresponda a uma única execução. Tais métodos não são cruciais para o problema e a invenção em questão e, dessa forma, são ignorados no presente documento, sem nenhuma perda de generalidade pretendida. De modo similar, para todos os tipos de outros detalhes independentes da invenção.[0012] Traditional methods (for example, nonces) are used to prevent an invocation from actually corresponding to a single execution. Such methods are not crucial to the problem and the invention in question and are therefore ignored in this document, without any intended loss of generality. Similarly, for all types of other details independent of the invention.

[0013] Uma vez que a invocação de i entra em um bloco na cadeia de blocos, cada usuário u em uma classe de usuários U executa C (na máquina virtual M, com o uso do último estado retido alcançado por C) por uma quantidade de etapas cobertas por taxa; atualiza sua própria versão dos dados de cadeia de blocos subtraindo a taxa da quantidade devida por i; e, se a execução terminar adequadamente, modifica (novamente, em sua própria versão da cadeia de blocos) as quantidades pertencentes aos jogadores afetados pela execução de C (possivelmente incluindo a quantidade pertencente ao próprio C). Pode se referir à execução de C por todos tais usuários como uma execução de sistema de C. Tipicamente, a classe U consiste em todos os usuários ou em um número muito grande de usuários (por exemplo, todos os usuários que desejam contribuir para gerar um novo bloco válido na cadeia de blocos).[0013] Once the invocation of i enters a block in the block chain, each user u in a class of users U executes C (in the virtual machine M, using the last retained state reached by C) for an amount steps covered by fee; updates its own version of the block chain data by subtracting the rate from the amount owed by i; and, if the execution ends properly, it modifies (again, in its own version of the block chain) the quantities belonging to the players affected by the execution of C (possibly including the quantity belonging to C itself). It can refer to the execution of C by all such users as a system execution of C. Typically, class U consists of all users or a very large number of users (for example, all users who want to contribute to generate a new valid block in the block chain).

[0014] Seonúmero de usuários for grande, o custo total do sistema pode ser muito alto, nesmo quando o número de etapas é um pouco pequeno. Isso implica que a taxa paga pelo invocador também precisa ser muito alta, embora o número de etapas não seja totalmente alto. Nessa situação, em um sistema de cadeia de blocos, faz sentido executar apenas contratos inteligentes que exigem poucas etapas.[0014] If the number of users is large, the total cost of the system can be very high, even when the number of steps is a little small. This implies that the fee paid by the summoner must also be very high, although the number of steps is not entirely high. In this situation, in a block chain system, it makes sense to execute only smart contracts that require few steps.

[0015] Isso é lamentável. Os usuários no sistema podem se beneficiar da invocação da execução de muitos contratos inteligentes que exigem um número não trivial de etapas computacionais, mas são impedidos de invocar os mesmos devido às taxas exorbitantes que têm que pagar.[0015] This is unfortunate. Users in the system can benefit from invoking the execution of many smart contracts that require a non-trivial number of computational steps, but are prevented from invoking them due to the exorbitant fees they have to pay.

SUMÁRIO DA INVENÇÃOSUMMARY OF THE INVENTION

[0016] De acordo com o sistema descrito no presente documento, em um sistema de transação em que as transações são organizadas em blocos, o fornecimento de novos blocos B' e B'** em relação a uma sequência de blocos anteriores Bº, B',..., B!* inclui fazer com que o bloco B' seja construído após a confirmação de que o bloco B' indica estados iniciais de transações que são consistentes com um estado das transações no bloco B"!, fazer com que o bloco B"** seja construído após a confirmação de que o bloco B"** indica estados iniciais de transações que são consistentes com um estado das transações no bloco B", e fazer com que uma pluralidade de entidades para verificar transações não verificadas anteriormente do bloco B' depois que o bloco B"** é construído. As transações podem ser contratos inteligentes. Um usuário pode construir o bloco B' em conexão com o lançamento de uma transação para pelo menos um dos contratos inteligentes no bloco B”. O usuário também pode lançar resultados de transação para os contratos inteligentes no bloco B". O usuário pode também lançar um número de etapas para execução dos resultados de contratos inteligentes para os contratos inteligentes no bloco B". O usuário pode também lançar uma taxa que a pluralidade de entidades recebe para verificar transações do bloco B". A pluralidade de entidades pode ser um subconjunto de todos os usuários do bloco B”. A pluralidade de entidades pode ser escolhida aleatoriamente. A escolha da pluralidade de entidades aleatoriamente pode incluir aplicar uma função de hash criptográfica a dados que incluem pelo menos um dentre: informações sobre tempo, informações sobre um ou mais blocos, dados incluídos em um ou mais blocos ou dados deduzidos a partir de uma ou mais blocos.[0016] According to the system described in this document, in a transaction system in which transactions are organized in blocks, the supply of new blocks B 'and B' ** in relation to a sequence of previous blocks B, B ', ..., B! * Includes having block B' built after confirming that block B 'indicates initial transaction states that are consistent with a state of transactions in block B "! block B "** is constructed after confirmation that block B" ** indicates initial transaction states that are consistent with a state of transactions in block B ", and cause a plurality of entities to verify unverified transactions previously from block B 'after block B "** is built. Transactions can be smart contracts. A user can build block B' in connection with launching a transaction for at least one of the smart contracts in block B” You can also post translation results for smart contracts in block B ". The user can also post a number of steps for executing smart contract results for smart contracts in block B ". The user can also post a fee that the plurality of entities receive to verify transactions in block B". The plurality of entities can be a subset of all users in block B ”. The plurality of entities can be chosen at random. Choosing the plurality of entities at random may include applying a cryptographic hash function to data that includes at least one of: time information, information about one or more blocks, data included in one or more blocks, or data deduced from one or more more blocks.

[0017] De acordo adicionalmente com o sistema descrito no presente documento, a ação de fazer com que um bloco B em uma cadeia de blocos seja adicionado à cadeia de blocos que inclui fazer com que uma entidade receba informações que correspondem a um bloco anterior, fazer com que a entidade receba uma invocação declarativa de uma execução de contrato inteligente em uma determinada entrada, em que a invocação declarativa declara resultados relevantes da execução e outros dados relevantes, fazer com que a entidade verifique a validade sintática da invocação, e fazer com que a entidade incorpore a invocação declarativa no bloco B em resposta à verificação da validade sintática da invocação. Os resultados relevantes podem especificar efeitos líquidos da execução de contrato inteligente, um estado resultante do contrato inteligente após a execução e um número de etapas para a execução. Os outros dados relevantes podem especificar um chamador da invocação declarativa, informações sobre tempo, informações de bloco e/ou uma taxa pagável. À invocação declarativa pode ser sintaticamente válida se a taxa for adequada para o número de etapas para execução e um pagador da taxa tiver ativos suficientes para pagar a taxa, e em que a taxa pode ser paga se a invocação declarativa aparecer na cadeia de blocos.[0017] In addition to the system described in this document, the action of causing a block B in a chain of blocks to be added to the chain of blocks that includes causing an entity to receive information that corresponds to a previous block, cause the entity to receive a declarative invocation of a smart contract execution on a given entry, where the declarative invocation declares relevant execution results and other relevant data, cause the entity to verify the syntactic validity of the invocation, and to make that the entity incorporates the declarative invocation in block B in response to checking the syntactic validity of the invocation. Relevant results can specify net effects of smart contract execution, a state resulting from the smart contract after execution and a number of steps for execution. The other relevant data may specify a declarative invocation caller, time information, block information and / or a payable fee. Declarative invocation can be syntactically valid if the fee is adequate for the number of steps to be taken and a fee payer has sufficient assets to pay the fee, and the fee can be paid if the declarative invocation appears in the block chain.

[0018] De acordo adicionalmente com o sistema descrito no presente documento, a ação de fazer com que um conjunto de verificadores em uma cadeia de blocos seja atribuído para verificar um conjunto S de uma ou mais invocações declarativas de execuções de contrato inteligente em determinadas entradas, em que as invocações declarativas declaram resultados relevantes das execuções de contrato inteligente, inclui os verificadores que recebem o conjunto S, os verificadores que determinam quais das invocações declarativas em S são semanticamente válidas e os verificadores que fornecem respostas autenticadas da uma ou mais invocações declarativas que são semanticamente válidas. O conjunto de verificadores pode ser selecionado com base em S, de uma maneira pseudoaleatório, através de uma determinada função criptográfica. Pelo menos um verificador pode determinar que o pelo menos um verificador foi selecionado através de uma computação que envolve uma chave secreta do pelo menos um verificador, e o pelo menos um verificador pode comprovar para outros que o pelo menos um verificador foi selecionado. Uma invocação l em S pode ser considerada correta se as respostas de pelo menos um determinado número de verificadores atribuído a S indicarem que | é semanticamente correta.[0018] In addition to the system described in this document, the action of causing a set of verifiers in a block chain to be assigned to verify a set S of one or more declarative invocations of smart contract executions on certain entries , where declarative invocations declare relevant results of smart contract executions, includes the verifiers that receive the set S, the verifiers that determine which of the declarative invocations in S are semantically valid and the verifiers that provide authenticated responses to one or more declarative invocations which are semantically valid. The set of verifiers can be selected based on S, in a pseudo-random way, through a certain cryptographic function. At least one verifier can determine that at least one verifier has been selected through computation involving a secret key from at least one verifier, and at least one verifier can prove to others that at least one verifier has been selected. An invocation l in S can be considered correct if the responses of at least a certain number of verifiers assigned to S indicate that | it is semantically correct.

[0019] “De acordo adicionalmente com o sistema descrito no presente documento, em uma cadeia de blocos em que um conjunto S de invocações declarativas de contrato inteligente já foi registrado, um conjunto de verificadores atribuídos para S, e os verificadores forneceram respostas autenticadas sobre quais das invocações de S são semanticamente válidas, fazer com que um veredicto da invocações de S seja incorporado na cadeia de blocos inclui ter uma entidade que recebe as respostas autenticadas dos verificadores, ter a entidade que deduz a correção das invocações de S, e tem a entidade que corpora na cadeia de blocos um veredicto final sobre a correção das invocações de S. O veredicto final de uma invocação l em S pode indicar que | está correta se as respostas de pelo menos um determinado número de verificadores atribuídos a S indicarem que | é semanticamente válida. Se o veredito final de uma invocação | de S indicar que | está correta, outros usuários podem ser provocados a atualizar o estado do contrato inteligente e considerem que os efeitos líquidos declarados da execução do contrato inteligente ocorreram.[0019] “In addition to the system described in this document, in a chain of blocks in which a set S of declarations of intelligent contract invocations has already been registered, a set of verifiers assigned to S, and the verifiers provided authenticated responses on which of S's invocations are semantically valid, having a verdict of S's invocations incorporated into the block chain includes having an entity that receives authenticated responses from verifiers, having the entity that deducts the correction from S's invocations, and having the entity that incorporates a final verdict on the correctness of the invocations of S in the chain of blocks. The final verdict of an invocation l in S may indicate that | is correct if the responses from at least a certain number of verifiers assigned to S indicate that | is semantically valid. If the final verdict of an invocation | of S indicate that | is correct, other users may be provoked to update the status of the smart contract and consider that the stated net effects of the smart contract execution have occurred.

[0020] De acordo adicionalmente com o sistema descrito no presente documento, a ação de fazer com que um bloco B em uma cadeia de blocos seja adicionado à cadeia de blocos inclui fazer com que uma entidade receba informações que correspondem a um bloco anterior, fazer com que o recebimento de uma invocação declarativa comprometida de uma execução de contrato inteligente em uma determinada entrada, em que a invocação declarativa comprometida declara pelo menos alguns resultados relevantes da execução, um compromisso com outros resultados relevantes da execução, e outros dados relevantes, causar a verificação da validade sintática da invocação declarativa comprometida e causar a incorporação da invocação declarativa comprometida no bloco B em resposta à verificação da validade sintática da invocação declarativa comprometida. Os resultados relevantes podem especificar efeitos líquidos da execução, um estado resultante do contrato após execução e/ou um número de etapas e os outros dados relevantes podem especificar um chamador da invocação, informações sobre tempo, informações de bloco e/ou uma taxa pagável. À invocação declarativa pode ser sintaticamente válida se a taxa for adequada para o número de etapas e o pagador da taxa tiver ativos suficientes no sistema para pagar a taxa, e a taxa pode ser paga se a invocação aparecer na cadeia de blocos.[0020] In addition to the system described in this document, the action of having a block B in a chain of blocks is added to the chain of blocks includes making an entity receive information that corresponds to a previous block, making causing the receipt of a compromised declarative invocation of a smart contract execution at a given entry, where the compromised declarative invocation declares at least some relevant results of the execution, a commitment to other relevant results of the execution, and other relevant data, cause the verification of the syntactic validity of the compromised declarative invocation and cause the incorporation of the compromised declarative invocation in block B in response to the verification of the syntactic validity of the compromised declarative invocation. The relevant results can specify net effects of the execution, a state resulting from the contract after execution and / or a number of steps and the other relevant data can specify an invocation caller, time information, block information and / or a payable fee. Declarative invocation can be syntactically valid if the fee is adequate for the number of steps and the fee payer has enough assets in the system to pay the fee, and the fee can be paid if the invocation appears in the block chain.

[0021] De acordo adicionalmente com o sistema descrito no presente documento, a ação de fazer com que um conjunto de verificadores em uma cadeia de blocos seja atribuído para verificar um conjunto S de invocações declarativas, incluindo pelo menos uma invocação declarativa comprometida | que especifica uma execução e de um contrato inteligente em determinadas entradas, em que | inclui um compromisso com pelo menos alguns resultados relevantes rr de e, inclui os verificadores que recebem o conjunto S, os verificadores que reconstroem a execução e a fim de computar os resultados relevantes rr, e os verificadores que fornecem respostas autenticadas que incluem compromissos personalizados com rr dos verificadores. Os verificadores atribuídos podem ser selecionados com base em S, de uma maneira pseudoaleatório, através de uma determinada função criptográfica. Pelo menos um verificador pode determinar que o pelo menos um verificador foi selecionado através de uma computação que envolve uma chave secreta do pelo menos um verificador, e o pelo menos um verificador pode comprovar para outros que o pelo menos um verificador foi selecionado. A invocação declarativa comprometida | em S pode ser considerada correta apenas se as respostas de pelo menos um determinado número de verificadores atribuídos a S incluífem um compromisso personalizado com os resultados relevantes rr comprometidos em |.[0021] In addition to the system described in this document, the action of causing a set of verifiers in a block chain to be assigned to verify a set S of declarative invocations, including at least one committed declarative invocation | specifying an execution and a smart contract on certain entries, where | includes a commitment to at least some relevant results rr from e, includes the verifiers that receive the set S, the verifiers that reconstruct the execution and in order to compute the relevant results rr, and the verifiers that provide authenticated responses that include personalized commitments with rr of the checkers. The assigned verifiers can be selected based on S, in a pseudo-random way, through a certain cryptographic function. At least one verifier can determine that at least one verifier has been selected through computation involving a secret key from at least one verifier, and at least one verifier can prove to others that at least one verifier has been selected. The compromised declarative invocation | in S can be considered correct only if the responses of at least a certain number of verifiers assigned to S include a personalized commitment to the relevant results rr committed to |.

[0022] “De acordo adicionalmente com o sistema descrito no presente documento, em uma cadeia de blocos em que um conjunto S de invocações declarativas de contrato inteligente já foi registrado, um conjunto de verificadores atribuídos para S, em que o conjunto S inclui pelo menos uma invocação declarativa comprometida | que específica uma execução e de um contrato inteligente em uma determinada entrada, e em que | inclui um compromisso com pelo menos alguns resultados relevantes rr de e, e os verificadores forneceram respostas autenticadas sobre as invocações de S, fazer com que um veredicto das invocações de S seja incorporado na cadeia de blocos inclui ter uma entidade que recebe as respostas autenticadas dos verificadores, ter a entidade que deduz a correção das invocações de S, e ter a entidade que incorpora na cadeia de blocos um veredicto final sobre a correção das invocações de S. As respostas de pelo menos um determinado número dos verificadores atribuídos para S podem incluir um compromisso personalizado com os mesmos resultados relevantes rr comprometidos com |, e o veredicto final da invocação declarativa comprometida | em S pode indicar que | está correta. O veredito final da correção de | pode fazer com que outros usuários atualizem o estado do contrato inteligente e considerem que os efeitos líquidos da execução e do contrato inteligente ocorreram.[0022] “In addition to the system described in this document, in a chain of blocks in which a set S of declarations of intelligent contract invocations has already been registered, a set of verifiers assigned to S, in which set S includes at least least one committed declarative invocation | which specifies an execution and a smart contract on a given entry, and on which | includes a commitment to at least some relevant results rr from e, and verifiers have provided authenticated responses to S's invocations, having a verdict on S's invocations incorporated into the block chain includes having an entity that receives authenticated responses from S verifiers, having the entity that deducts the correction of S invocations, and having the entity that incorporates in the block chain a final verdict on the correction of S invocations. Responses from at least a certain number of verifiers assigned to S may include a personalized commitment with the same relevant results rr committed to |, and the final verdict of the committed declarative invocation | in S can indicate that | it's correct. The final verdict of the | it can cause other users to update the status of the smart contract and consider that the net effects of the execution and the smart contract have occurred.

[0023] “De acordo adicionalmente com o sistema descrito no presente documento, o software de computador, fornecido em um meio legível por computador não transitório, inclui código executável que implanta qualquer uma ou todas as etapas descritas no presente documento.[0023] “In addition to the system described in this document, computer software, provided in a non-transitory, computer-readable medium, includes executable code that implements any or all of the steps described in this document.

[0024] “Uma tecnologia alternativa para contratos inteligentes - Será apresentada uma nova tecnologia para implantar contratos inteligentes em uma cadeia de blocos. A presente nova tecnologia pode ser implantada junto àquelas tradicionais, e pode manusear de modo eficaz uma classe de contratos que são muito dispendiosos para manusear através de tecnologias tradicionais.[0024] “An alternative technology for smart contracts - A new technology to deploy smart contracts in a chain of blocks will be presented. The present new technology can be deployed alongside traditional ones, and can effectively handle a class of contracts that are very expensive to handle using traditional technologies.

[0025] “Uma grande classe de contratos A nova tecnologia é especialmente útil para contratos inteligentes, cujo[0025] “A great class of contracts The new technology is especially useful for smart contracts, whose

[0026] + estado interno/computacional (estado, abreviado) - que pode alterar da execução para a próxima - e[0026] + internal / computational state (state, abbreviated) - which can change from execution to the next - and

[0027] + efeitos líquidos - por exemplo, novo estado, transferências de dinheiro de uma parte para outra, etc. - podem ser descritos de maneira compacta. Será enfatizado que a presente tecnologia permite que um indivíduo manuseie também contratos inteligentes que exigem[0027] + net effects - for example, new status, money transfers from one party to another, etc. - can be described in a compact way. It will be emphasized that the present technology allows an individual to also handle smart contracts that require

[0028] *muitas etapas computacionais e[0028] * many computational steps and

[0029] uma quantidade muito grande de memória.[0029] a very large amount of memory.

[0030] De fato, amemoória usada em uma execução pode ser muito grande, enquanto as informações de estado retidas para a próxima execução podem ser muito compactas - por exemplo, que consistindo em algumas variáveis de valor limitado. É importante ressaltar que contratos inteligentes sem estado satisfazem trivialmente essa propriedade e são muito poderosos.[0030] In fact, the memory used in one run can be very large, while the state information retained for the next run can be very compact - for example, consisting of some variables of limited value. It is important to note that stateless smart contracts trivially satisfy this property and are very powerful.

[0031] Certamente, alguns contratos inteligentes podem precisar ter um estado para alcançar um determinado desiderato. À luz da presente nova tecnologia, entretanto, será do interesse dos projetistas do pedido arquitetar tais contratos a fim de compactar o tamanho de seu estado retido.[0031] Certainly, some smart contracts may need to have a state to achieve a particular goal. In the light of the present new technology, however, it will be in the interest of the order's designers to architect such contracts in order to compact the size of their retained state.

[0032] Uma cadeia de blocos - Tecnologia Agnóstica A tecnologia faz uso inovador da classificação criptográfica (secreta), a tecnologia de autosseleção criptograficamente segura que é um componente-chave da tecnologia Algorand, que é descrita no pedido de patente PCT nº POCT/US2017/031037 depositado em 4 de maio de 2017, que é incorporado a título de referência no presente documento. A tecnologia Algorand também é descrita na maioria, senão em todos, dos pedidos de patente incorporados no presente documento a título de referência em uma outra seção do pedido.[0032] A block chain - Agnostic Technology The technology makes innovative use of cryptographic (secret) classification, the cryptographically secure self-selection technology that is a key component of Algorand technology, which is described in PCT patent application No. POCT / US2017 / 031037 deposited on May 4, 2017, which is incorporated by reference in this document. Algorand technology is also described in most, if not all, of the patent applications incorporated in this document for reference in another section of the application.

[0033] Entretanto, apesar de suas outras vantagens, não é necessário usar Algorand como a plataforma subjacente de cadeia de blocos para usar a presente nova tecnologia para manusear uma nova classe de contratos inteligentes. A nova tecnologia pode ser usada com quaisquer outras plataformas, como Bitcoin, Ethereum, etc.[0033] However, despite its other advantages, it is not necessary to use Algorand as the underlying block chain platform to use the present new technology to handle a new class of smart contracts. The new technology can be used with any other platforms, such as Bitcoin, Ethereum, etc.

[0034] Ditoisto, conforme deve ser destacado posteriormente, o uso de Algorand como o mecanismo subjacente de cadeia de blocos irá suscitar algumas vantagens adicionais.[0034] That said, as will be highlighted later, the use of Algorand as the underlying block chain mechanism will give rise to some additional advantages.

BREVE DESCRIÇÃO DOS DESENHOSBRIEF DESCRIPTION OF THE DRAWINGS

[0035] As modalidades do sistema descrito no presente documento são explicadas em mais detalhes, de acordo com as Figuras dos desenhos, que são brevemente descritas conforme descrito a seguir.[0035] The modalities of the system described in this document are explained in more detail, according to the Figures of the drawings, which are briefly described as described below.

[0036] A Figura1é uma representação esquemática de uma rede e estações de computação de acordo com uma modalidade do sistema descrito no presente documento.[0036] Figure 1 is a schematic representation of a network and computing stations according to a system modality described in this document.

[0037] A Figura2 é um resumo esquemático e conceitual de uma cadeia de blocos que incorpora o sistema descrito no presente documento.[0037] Figure2 is a schematic and conceptual summary of a chain of blocks that incorporates the system described in this document.

DESCRIÇÃO DETALHADA DE VÁRIAS MODALIDADESDETAILED DESCRIPTION OF VARIOUS MODALITIES

[0038] O sistema descrito no presente documento fornece um mecanismo que melhora a eficiência e diminui as computações necessárias por estações de trabalho (versificadores) para verificar blocos em uma cadeia de blocos que contêm contratos inteligentes.[0038] The system described in this document provides a mechanism that improves efficiency and decreases the computations needed by workstations (versifiers) to check blocks in a chain of blocks that contain smart contracts.

[0039] Com referência à Figura 1, um diagrama mostra uma pluralidade de estações de trabalho de computação 22a a 22c conectadas a uma rede de dados 24, como a Internet. As estações de trabalho 22a a 22c se comunicam umas com as outras através da rede 24 para fornecer propagação e verificação de transação distribuída, conforme descrito em mais detalhes em outro lugar no presente documento. O sistema pode acomodar qualquer número de estações de trabalho com capacidade para fornecer a funcionalidade descrita no presente documento, desde que as estações de trabalho 22a a 22c tenham capacidade para se comunicar umas com outras. Cada uma das estações de trabalho 22a a 22c pode realizar de forma independente o processamento para propagar as transferências para todas as outras estações de trabalho no sistema e para verificar transações/blocos e atuar como verificadores, conforme descrito em mais detalhes em outro lugar no presente documento.[0039] With reference to Figure 1, a diagram shows a plurality of computing workstations 22a to 22c connected to a data network 24, such as the Internet. Workstations 22a to 22c communicate with each other over network 24 to provide distributed transaction verification and propagation, as described in more detail elsewhere in this document. The system can accommodate any number of workstations capable of providing the functionality described in this document, provided that workstations 22a to 22c are capable of communicating with each other. Each of workstations 22a through 22c can independently perform processing to propagate transfers to all other workstations in the system and to verify transactions / blocks and act as verifiers, as described in more detail elsewhere in the present document.

[0040] “Com referência à Figura 2, uma cadeia de blocos 200 inclui uma pluralidade de blocos 202 a 205. Cada um dos blocos contém um ou mais contratos inteligentes e informações adicionais, conforme descrito em mais detalhes em outro lugar no presente documento. O bloco 202 é um bloco mais antigo da cadeia de blocos 200, o bloco 203 é o próximo mais antigo, etc. O bloco 205 é um bloco mais novo da cadeia de blocos 200.[0040] “With reference to Figure 2, a chain of blocks 200 includes a plurality of blocks 202 to 205. Each of the blocks contains one or more smart contracts and additional information, as described in more detail elsewhere in this document. Block 202 is an older block in block chain 200, block 203 is the next oldest, etc. Block 205 is a newer block in block chain 200.

[0041] Pode existir qualquer número de blocos na cadeia de blocos 200. Cada um dos blocos 202 a 205 contém informações que validam um bloco anterior, de modo que, por exemplo, o bloco 203 contenha informações que validam o bloco 202 e o bloco 204 contenha informações que validam o bloco 203. Dessa forma, o mais recente validado dentre os blocos 202 a 205 na cadeia de blocos 200 valida diretamente um bloco anterior e valida indiretamente todos os outros blocos anteriores. Em uma modalidade no presente documento, cada um dos blocos 202 a 205 contém um hash assinado de um anterior dentre os blocos 202 a 205, embora outros mecanismos possam ser usados para validar/confirmar blocos anteriores, incluindo vários mecanismos de cadeia de blocos convencionais conhecidos na técnica. Além disso, um ou mais dos blocos 202 a 205 podem ser verificados e podem incluir um veredicto quanto à autenticidade do bloco, conforme descrito em mais detalhes em outro lugar no presente documento. Um ou mais blocos mais novos dentre os blocos 202 a 205 podem ser inicialmente não verificados e podem ser subsequentemente verificados e autenticados, conforme descrito em mais detalhes em outro lugar no presente documento.[0041] There can be any number of blocks in block chain 200. Each of blocks 202 to 205 contains information that validates a previous block, so that, for example, block 203 contains information that validates block 202 and block 204 contains information that validates block 203. Thus, the most recent validated among blocks 202 to 205 in block chain 200 directly validates a previous block and indirectly validates all other previous blocks. In one embodiment in this document, each of blocks 202 to 205 contains a signed hash of a previous one among blocks 202 to 205, although other mechanisms can be used to validate / confirm previous blocks, including several known conventional block chain mechanisms in the technique. In addition, one or more of the blocks 202 to 205 can be verified and may include a verdict on the authenticity of the block, as described in more detail elsewhere in this document. One or more newer blocks among blocks 202 to 205 can be initially unverified and can subsequently be verified and authenticated, as described in more detail elsewhere in this document.

[0042] Idealmente, a taxa para invocar uma execução de um contrato inteligente C deve corresponder ao custo total da computação que a execução faz com que o sistema incorra. Mas: Qual é o custo total do sistema para uma execução de C?[0042] Ideally, the fee for invoking an execution of a smart contract C should correspond to the total cost of computing that the execution causes the system to incur. But: What is the total cost of the system for a C execution?

[0043] Se houver n usuários e a execução de C (na determinada máquina M) consistir em ttsteps, então, o custo total do sistema pode ser estimado como sendo n x Hsteps.?[0043] If there are n users and the execution of C (on the given machine M) consists of ttsteps, then the total cost of the system can be estimated to be n x Hsteps.?

[0044] “Dessa forma, se n for grande, o custo total do sistema pode ser muito alto, mesmo quando tsteps é um pouco pequeno. Isso 2 Aqui presume-se que cada usuário verifica a correção de um novo bloco e executa todos os contratos inteligentes que o mesmo contém. Em algumas plataformas de cadeia de blocos, apenas nós completos têm essa responsabilidade, mas não nós leves. De qualquer maneira, n pode ser muito grande.[0044] “Thus, if n is large, the total cost of the system can be very high, even when tsteps are a little small. This 2 Here it is assumed that each user checks the correctness of a new block and executes all the smart contracts that it contains. On some block chain platforms, only full nodes have this responsibility, but not light nodes. Either way, it cannot be very large.

implica que a taxa pagável pelo invocador i de C também precisa ser muito alta, embora tsteps não seja alto. Nessa situação, em um sistema de cadeia de blocos, faz sentido executar apenas contratos inteligentes que exigem poucas etapas. Isso é lamentável. Os usuários no sistema podem se beneficiar da invocação da execução de muitos contratos inteligentes que exigem um número não trivial de etapas computacionais, mas são impedidos de invocar os mesmos devido às taxas exorbitantes que têm que pagar.implies that the rate payable by summoner i of C must also be very high, although tsteps is not high. In this situation, in a block chain system, it makes sense to execute only smart contracts that require few steps. This is unfortunate. Users in the system can benefit from invoking the execution of many smart contracts that require a non-trivial number of computational steps, but are prevented from invoking them due to the exorbitant fees they have to pay.

[0045] Constatou-se que é conveniente descrever a tecnologia da invenção em uma escolha específica de partes. Deve-se compreender, no entanto, que cada parte é nova por si mesmo e pode ser usada em isolamento, e que outras divisões em partes também são possíveis dentro do escopo da invenção.[0045] It has been found that it is convenient to describe the technology of the invention in a specific choice of parts. It should be understood, however, that each part is new in itself and can be used in isolation, and that further divisions into parts are also possible within the scope of the invention.

1. INVOCAÇÕES.1. INVOCATIONS.

[0046] “Uma invocação declarativa | de um contrato inteligente C especifica os resultados relevantes em uma execução e de C (em determinadas entradas/entradas e estado inicial) e outros dados relevantes.[0046] “A declarative invocation | of a smart contract C specifies the relevant results in an execution and of C (in certain inputs / inputs and initial state) and other relevant data.

[0047] Os resultados relevantes podem incluir o novo estado alcançado por e e os ajustes de quantidade de jogador correspondentes a e.[0047] Relevant results may include the new state reached by e and the player quantity adjustments corresponding to e.

[0048] Os dados relevantes podem incluir uma indicação do contrato, estado e entradas em questão; o número de etapas de e (em relação a uma máquina M de referência) ou um limite superior para tal número de etapas; e uma taxa, representando o custo ou um limite superior para o custo que a invocação causa ao sistema. (Conforme será visto, esse custo pode ser significativamente menor do que aquele causado quando todos os usuários executam e.)[0048] The relevant data may include an indication of the contract, status and entries in question; the number of steps of e (in relation to a reference M machine) or an upper limit for that number of steps; and a fee, representing the cost or an upper limit for the cost that the invocation causes to the system. (As will be seen, this cost can be significantly less than that caused when all users run and.)

[0049] Os dados relevantes também podem incluir uma indicação de pelo menos um usuário adequado i responsável pela invocação, e a assinatura digital de i (ou uma outra forma de autenticação), significando que i de fato aceita a responsabilidade pela invocação, incluindo seu custo para o sistema. Tal usuário i pode, de fato, ter gerado por si mesmo a execução a fim de computar seus dados relevantes.[0049] Relevant data may also include an indication of at least one suitable user i responsible for the invocation, and the digital signature of i (or another form of authentication), meaning that i in fact accepts responsibility for the invocation, including its cost to the system. Such user i may, in fact, have generated the execution itself in order to compute its relevant data.

[0050] Os dados relevantes também podem incluir uma indicação de um bloco ou um conjunto de blocos em que se espera que a invocação seja oficialmente registrada, ou seja, apareça na cadeia de blocos. (De fato, o usuário i pode renunciar à responsabilidade pela invocação se a mesma não entrar na cadeia de blocos em r.)[0050] The relevant data may also include an indication of a block or a set of blocks in which the invocation is expected to be officially registered, that is, appear in the block chain. (In fact, user i can waive responsibility for the invocation if it does not enter the block chain in r.)

[0051] — Por uma questão de simplicidade, pode se referir mais simplesmente a uma invocação declarativa | como uma invocação.[0051] - For the sake of simplicity, it can refer more simply to a declarative invocation | as an invocation.

[0052] Discussão e Detalhes Adicionais Conforme anteriormente, um usuário adequado i invoca a execução de C do sistema em uma entrada, entrada, mediante a propagação de uma assinatura digital da mesma. Nesse momento, entretanto, a assinatura de i, além de C, entrada e uma taxa correta, também autentica os efeitos da execução de Ce o número de etapas tomadas pela execução.?[0052] Discussion and Additional Details As previously, a suitable user i invokes the C execution of the system in an entry, entry, by propagating a digital signature of the same. At this point, however, the signature of i, in addition to C, entry and a correct rate, also authenticates the effects of C's execution and the number of steps taken by the execution.

[0053] “Em uma configuração de amostra, i primeiro computa uma execução e de C(input), ou algum outro computa e para o mesmo, a fim de descobrir quais resultados a execução e terá e, então, solicita ao sistema que confirme esses resultados. Na execução e, C começa com o estado retido yc: ou seja, o último estado retido alcançado por C após a sequência de execuções de C registrada na cadeia de blocos.[0053] “In a sample configuration, i first computes an execution and of C (input), or some other computes and for the same, in order to find out what results the execution will have and then asks the system to confirm those results. In execution e, C starts with the retained state yc: that is, the last retained state reached by C after the sequence of executions of C registered in the block chain.

[0054] Por exemplo, mas sem perda de generalidade, i computa e inicia a propagação de 3 Deve-se observar que as informações acima podem ser um pouco redundantes. Isso é para maior clareza e não pretende impor qualquer limitação. Por exemplo, a taxa pode ser determinada, através da 'lista de preços' atual do sistema, a partir de outras quantidades, como seu comprimento total (ou, por exemplo, apenas o comprimento dos efeitos) e/ou o número de etapas. De modo similar, o número de etapas pode ser limitado pela taxa e assim por diante. Ao longo, uma quantidade mencionada que pode ser deduzida/estimada a partir de outras quantidades, pode não aparecer explicitamente, mas deduzida/estimada.[0054] For example, but without loss of generality, i computes and initiates the propagation of 3 It should be noted that the information above can be somewhat redundant. This is for clarity and is not intended to impose any limitation. For example, the rate can be determined, using the system's current 'price list', from other quantities, such as its total length (or, for example, only the length of the effects) and / or the number of steps. Similarly, the number of steps can be limited by the rate and so on. Throughout, a mentioned quantity that can be deducted / estimated from other quantities, may not appear explicitly, but deducted / estimated.

invoke; & STG;(i,r, C, input, Hesteps, ve, 76, (x, amount!), (y, amounts), ..., fee)invoke; &STG; (i, r, C, input, Hesteps, ve, 76, (x, amount!), (Y, amounts), ..., fee)

[0055] em que[0055] where

[0056] +-ié um identificador do usuário invocador, incluído principalmente por conveniência, se dedutível da assinatura de i.[0056] + -iis an identifier of the invoking user, included mainly for convenience, if deductible from i's subscription.

[0057] *Cocontrato em questão.[0057] * Contract in question.

[0058] +r,nesse exemplo, é o bloco único específico em que i espera que a invocação seja registrada e i nega responsabilidade pela invocação se a mesma não estiver registrada no bloco r[0058] + r, in this example, is the specific single block in which i expects the invocation to be registered and i denies responsibility for the invocation if it is not registered in block r

[0059] +r', possivelmente uma indicação de um bloco futuro. (Por exemplo, para transmitir que a invocação deve ser descartada se um veredicto final sobre a execução invocada aparecer na cadeia de blocos pelo bloco r'.)[0059] + r ', possibly an indication of a future block. (For example, to convey that the invocation must be discarded if a final verdict on the execution invoked appears in the block chain by block r '.)

[0060] + inputé a entrada (ou entradas) i na qual i escolhe invocar a execução de C.[0060] + input is the input (or inputs) i in which i chooses to invoke the execution of C.

[0061] +tstepséonúmero de e (em determinada máquina M de referência).[0061] + tstepséon number of e (on a given M reference machine).

[0062] *vycéo estado iniciale y'c é o novo estado retido de C gerado por e.[0062] * vycéo initial state y'c is the new retained state of C generated by e.

[0063] + (x, amount), (y,;amounty,),... são os pares de ajuste de quantidade de jogador gerados por e.[0063] + (x, amount), (y,; amounty,), ... are the player quantity adjustment pairs generated by and.

[0064] +taxaé a quantidade de dinheiro pagável por i (nesse exemplo específico).[0064] + tax is the amount of money payable per i (in this specific example).

[0065] *+notamanho (esperado) do conjunto de verificadores para a invocação (que será discutida em breve).[0065] * + grade (expected) of the set of verifiers for the invocation (which will be discussed shortly).

[00668] <-t um número inteiro, possivelmente incluído para indicar o número de respostas coerentes sobre a invocação necessárias para considerar a invocação correta (uma noção que também deve ser discutida em breve).[00668] <-t an integer, possibly included to indicate the number of coherent invocation responses needed to consider the invocation correct (a notion that should also be discussed shortly).

[0067] Pode se referir a invoke; como a invocação - de i de[0067] You can refer to invoke; as the invocation - from i to

C(input)- e a (i,r, C, input, testeps, vo, Ye, (£, amount”), (y, amount), ..., fee,n,t)C (input) - and a (i, r, C, input, testeps, vo, Ye, (£, amount ”), (y, amount), ..., fee, n, t)

[0068] — conforme o resumo de execução declarado.[0068] - according to the declared execution summary.

[0069] A taxa pagável pode depender de algumas quantidades escolhidas, como (sem qualquer limitação pretendida) tsteps, o tamanho do resumo de execução declarado, e o tamanho do estado resultante y'c. Portanto, é importante projetar C de modo que seus estados sejam compactos, e focar em contratos cujos efeitos líquidos podem ser descritos de maneira compacta. A taxa também pode depender das quantidades n e t, se a invocação incluir tais quantidades. A taxa também pode depender de outras quantidades ainda, como o tamanho do veredicto final, que deve ser discutido em breve. Considera-se que a taxa é adequada se, de fato, for igual ou exceder a quantidade correspondente às quantidades escolhidas.[0069] The fee payable may depend on some quantities chosen, such as (without any intended limitation) tsteps, the size of the declared execution summary, and the size of the resulting state y'c. Therefore, it is important to design C so that its states are compact, and to focus on contracts whose net effects can be described in a compact way. The rate may also depend on quantities n and t, if the invocation includes such quantities. The fee may also depend on other amounts as well, such as the size of the final verdict, which should be discussed shortly. The rate is considered to be adequate if, in fact, it is equal to or exceeds the quantity corresponding to the chosen quantities.

[0070] Em suma, invoke; é essencialmente a solicitação de para o sistema verificar a correção do resumo de execução declarado e, então, (a) atualizar o novo estado retido de C e (b) ajustar as quantidades pertencentes aos jogadores afetados pela execução de C.[0070] In short, invoke; it is essentially the request for the system to verify the correctness of the declared execution summary and then (a) update the new retained state of C and (b) adjust the quantities belonging to the players affected by the execution of C.

[0071] Será visto agora como tal invocação | é registrada.[0071] It will now be seen as such an invocation | is registered.

2. REGISTRO.2. REGISTRATION.

[0072] “Umainvocação | pode entrar na cadeia de blocos muito semelhante a um pagamento comum. A invocação | pode ser propagada de usuário para usuário até que algum usuário u encarregado de gerar um novo bloco coloque a mesma em seu bloco. De preferência, u deve verificar se | é sintaticamente válida.[0072] “One Invocation | you can enter the block chain very similar to a common payment. The invocation | it can be propagated from user to user until some user u in charge of generating a new block places it in its block. Preferably, u should check that | is syntactically valid.

[0073] A verificação da validade sintática exige a verificação de algumas condições simples. Por exemplo, pode incluir a verificação de que o estado inicial de C indicado em | coincide com o estado final indicado na última invocação de C registrada na cadeia de blocos. Ou que o usuário invocador, se houver, está, de fato, autorizado a fazer a invocação. Dessa forma, o registro de uma invocação na cadeia de blocos não exige a execução de C.[0073] Verification of syntactic validity requires verification of some simple conditions. For example, it may include checking that the initial state of C indicated in | coincides with the final state indicated in the last invocation of C registered in the block chain. Or that the summoning user, if any, is in fact authorized to do the summoning. Thus, registering an invocation in the block chain does not require the execution of C.

[0074] A validade sintática também pode incluir a verificação de que um usuário i que invoca | possui, de fato, dinheiro suficiente para pagar a taxa especificada em |. De fato, tal taxa pode ser paga automaticamente por i. (Também se pode considerar um contrato como sendo responsável pelo pagamento da taxa - por exemplo, devido ao fato de que é um contrato que chamou uma invocação. Se a taxa for paga com dinheiro pertencente a tal contrato, então, a validade sintática pode incluir verificar se o contrato tem dinheiro suficiente para pagar a taxa. Nesse caso, tal taxa pode ser paga automaticamente pelo contrato, quando | entra na cadeia de blocos.)[0074] The syntactic validity can also include the verification that a user i who invokes | does, in fact, have enough money to pay the fee specified in |. In fact, such a fee can be paid automatically by i. (A contract can also be considered to be responsible for paying the fee - for example, due to the fact that it is a contract that called an invocation. If the fee is paid with money belonging to such a contract, then syntactic validity may include check that the contract has enough money to pay the fee. In that case, that fee can be paid automatically by the contract when | it enters the block chain.

[0075] A validade sintática também pode incluir a verificação de que a taxa de | é adequada para o número de etapas indicado por |.[0075] The syntactic validity may also include the verification that the rate of | is suitable for the number of steps indicated by |.

[00768] Um bloco que inclui uma invocação de contrato inteligente não sintaticamente válida é considerado inválido. Consequentemente, um u honesto não deve incluir uma invocação sintática inválida em um novo bloco.[00768] A block that includes a smart contract invocation that is not syntactically valid is considered invalid. Consequently, an honest u must not include an invalid syntactic invocation in a new block.

[0077] A validade sintática também pode ser verificada durante a propagação de |. De fato, um usuário x que recebe uma | não sintaticamente válida pode não encaminhar a mesma para outros usuários.[0077] The syntactic validity can also be verified during the propagation of |. In fact, a user x who receives a | not syntactically valid may not forward it to other users.

[0078] Discussão e Detalhes Adicionais Deve-se observar que a verificação sintática de uma invocação | é tipicamente muito mais leve que sua verificação semântica correspondente. O último termo significa a verificação de que a realização da execução e invocada por | rende, de fato, o resumo de execução declarado. Tal verificação semântica pode ser muito longa, devido ao fato de que uma execução de um contrato inteligente pode tomar um número grande de etapas.[0078] Discussion and Additional Details It should be noted that the syntactic verification of an invocation | it is typically much lighter than its corresponding semantic check. The last term means the verification that the execution of the execution is invoked by | actually yields the declared execution summary. Such semantic verification can be very long, due to the fact that a smart contract execution can take a large number of steps.

[0079] —“Consequentemente, é uma vantagem principal que, na modalidade preferencial, um construtor de bloco u verifica apenas a validade sintática de |, mas não sua semântica. Um bloco típico contém milhares de transações e presume-se, por exemplo, que 1.000 das mesmas sejam invocações de contratos inteligentes, e que a execução de cada uma delas leva, em média, 1 segundo de computação. Então, mesmo desconsiderando todos as outras computações, para construir um novo bloco u seria necessário pelo menos 1.000 segundos (isto é, cerca de 16 minutos), se tivesse que verificar a validade semântica da invocação dos novos blocos que o mesmo produz. Isso é, de fato, o que um contratador de bloco deveria fazer no modelo tradicional de contrato inteligente. Entretanto, a produção de um bloco a cada 16 minutos pode ser muito lenta. Seria legitimamente preferencial produzir um novo bloco em poucos segundos.[0079] - “Consequently, it is a main advantage that, in the preferred modality, a block constructor u checks only the syntactic validity of |, but not its semantics. A typical block contains thousands of transactions and it is assumed, for example, that 1,000 of them are invocations of smart contracts, and that the execution of each one takes, on average, 1 second of computation. So, even disregarding all other computations, to build a new block u would need at least 1,000 seconds (that is, about 16 minutes), if you had to check the semantic validity of invoking the new blocks that it produces. This is, in fact, what a block contractor should do under the traditional smart contract model. However, the production of a block every 16 minutes can be very slow. It would be legitimately preferable to produce a new block in a few seconds.

[0080] Essa lentidão seria ainda pior se, durante a propagação de mensagem, fosse necessário que os usuários verificassem a validade semântica da invocação que encaminham para outros usuários.[0080] This slowness would be even worse if, during message propagation, it was necessary for users to verify the semantic validity of the invocation that they forward to other users.

[0081] Na modalidade preferencial, uma invocação é considerada oficial quando a mesma entra na cadeia de blocos, e apenas nesse momento o sistema começará a fazer o esforço necessário para verificar a validade semântica. Conforme será visto, entretanto, o esforço total do sistema será bastante contido e prático.[0081] In the preferred mode, an invocation is considered official when it enters the chain of blocks, and only then will the system begin to make the necessary effort to verify the semantic validity. As will be seen, however, the total effort of the system will be very restrained and practical.

3. ATRIBUIÇÕES.3. ASSIGNMENTS.

[0082] — Um conjunto S de uma ou mais invocações de contrato inteligente, registrado em um ou mais blocos, é atribuído a um conjunto de verificadores de contrato inteligente.[0082] - A set S of one or more invocations of smart contract, registered in one or more blocks, is assigned to a set of smart contract verifiers.

[0083] Por exemplo, S pode consistir em todas as invocações de contrato inteligente incluídas em um determinado bloco. Alternativamente, S pode consistir em uma única invocação. Ainda alternativamente, as invocações de um determinado bloco podem ser particionadas em vários conjuntos. Por exemplo, o primeiro conjunto pode consistir na primeira k invocação inteligente, para algum determinado número inteiro k; o segundo conjunto pode consistir no próximo k; e assim por diante. (Exceto o fato de que o último conjunto pode conter menos de k invocações.) - Como em outro exemplo, as invocações de contrato inteligente de um bloco podem ser particionadas (por exemplo, de alguma maneira canônica) em vários conjuntos, a fim de controlar o total número de etapas declaradas nos resumos de execução de cada conjunto. Por exemplo, o primeiro conjunto pode consistir nas primeiras k invocações no bloco, se a soma X do número de etapas em seu resumo de execução declarado não exceder um determinado número N, enquanto a soma de X e o número de etapas no resumo de execução declarado da próxima invocação é maior que N. O conjunto S pode depender do tamanho (esperado) dos conjuntos de verificadores. Por exemplo, S pode agrupar invocações que especificam um tamanho (esperado) similar de conjuntos de verificadores.[0083] For example, S can consist of all smart contract invocations included in a given block. Alternatively, S can consist of a single invocation. Alternatively, the invocations of a given block can be partitioned into several sets. For example, the first set may consist of the first k intelligent invocation, for some given integer k; the second set can consist of the next k; and so on. (Except the fact that the last set can contain less than k invocations.) - As in another example, a block's smart contract invocations can be partitioned (for example, in some canonical way) into multiple sets in order to control the total number of steps declared in the execution summaries of each set. For example, the first set may consist of the first k invocations in the block, if the sum X of the number of steps in your declared execution summary does not exceed a certain number N, while the sum of X and the number of steps in the execution summary declared value of the next invocation is greater than N. Set S may depend on the (expected) size of the verifier sets. For example, S can group invocations that specify a similar (expected) size of sets of verifiers.

[0084] O conjunto de verificadores de contrato inteligente atribuídos a S, Vs, é suficientemente aleatório e suficientemente numeroso, de modo que assegure que, com alta probabilidade, a maioria dos verificadores selecionados seja honesta, presumindo que uma determinada maioria dos usuários seja honesta. Além disso, um verificador em Vs pode ser selecionado proporcionalmente à quantidade de dinheiro que o mesmo possui atualmente no sistema ou em um determinado momento, de acordo com a cadeia de blocos. Esse verificador pode ser selecionado para pertencer a Vs com um peso maior, o que significa que o mesmo tem dois ou mais votos, e pode ser desejado assegurar que a maioria dos votos esteja em mãos honestas.[0084] The set of smart contract verifiers assigned to S, Vs, is sufficiently random and sufficiently numerous, to ensure that, with a high probability, most of the selected verifiers are honest, assuming that a particular majority of users are honest. . In addition, a checker in Vs can be selected in proportion to the amount of money it currently has in the system or at a given time, according to the block chain. This verifier can be selected to belong to Vs with a greater weight, which means that it has two or more votes, and it may be desired to ensure that the majority of votes are in honest hands.

[0085] Além disso, o conjunto Vs é, de preferência, verificável. Ou seja, (a) um indivíduo tem capacidade para computar Vs a partir de S, ou (b) um verificador em Vs tem capacidade para determinar que é, de fato, um membro de Vs e, se for assim, tem capacidade para provar a outros que esse é de fato o caso.[0085] Furthermore, the Vs set is preferably verifiable. That is, (a) an individual has the ability to compute Vs from S, or (b) a checker in Vs has the ability to determine that he is, in fact, a member of Vs and, if so, has the ability to prove to others that this is indeed the case.

[0086] “Discussão e Detalhes Adicionais A invenção atribui a cada conjunto S de contratos inteligentes um conjunto relativamente pequeno de verificadores, Vs, que irá investir o tempo necessário para verificar a correção semântica dos resumos de execução declarados das invocações em S, poupando outros usuários no sistema de fazer o mesmo trabalho. Se Vs fosse pequeno e fixo, o sistema não seria muito seguro, devido ao fato de que um adversário poderia, com o tempo, corromper todos os verificadores ou uma maioria deles.[0086] “Discussion and Additional Details The invention assigns each set of smart contracts a relatively small set of verifiers, Vs, which will invest the time necessary to verify the semantic correction of the declared execution summaries of the invocations in S, saving others users in the system do the same job. If Vs were small and fixed, the system would not be very secure, due to the fact that an opponent could, in time, corrupt all or a majority of the checkers.

[0087] —Parase proteger contra essa eventualidade, cada Vs é selecionado de uma maneira aleatória ou pseudoaleatória, com base em S e em algumas informações adicionais P. Por exemplo, pode-se usar uma função hash ou uma outra função criptográfica adequada H: por exemplo, Vs = H(S, P). Uma escolha possível de P pode incluir informações de tempo, informações sobre o bloco ou blocos em que S aparece, dados incluídos nesse bloco ou dedutíveis a partir desses blocos ou, mais geralmente, a partir da cadeia de blocos etc., incluindo nenhuma informação. (Deve-se observar que Vs pode ser selecionado com base em S, por ser selecionado com base no bloco ou blocos em que S aparece. Por exemplo, se S for o conjunto de todas as invocações do bloco B ou número do bloco n, então, Vs pode ser selecionado com base em B ou n. Como um outro exemplo, se S for o segundo conjunto de invocações, em alguma determinada ordem, do número de bloco n, então, Vs pode ser selecionado com base em informações que incluem o par (n, 2). O fato de ser selecionado com base em S inclui ser selecionado com base em S e outras informações.)[0087] —To protect against this eventuality, each Vs is selected in a random or pseudo-random manner, based on S and some additional information P. For example, you can use a hash function or another suitable cryptographic function H: for example, Vs = H (S, P). A possible choice of P may include timing information, information about the block or blocks in which S appears, data included in that block or deductible from those blocks or, more generally, from the block chain etc., including no information. (It should be noted that Vs can be selected based on S, because it is selected based on the block or blocks where S appears. For example, if S is the set of all invocations of block B or number of block n, then Vs can be selected based on B or N. As another example, if S is the second set of invocations, in some order, of block number n, then Vs can be selected based on information that includes the pair (n, 2). The fact that it is selected based on S includes being selected based on S and other information.)

[0088] Essa escolha aleatória de Vs torna muito mais difícil para um adversário corromper alguns dos verificadores em Vs. De fato, o conjunto de verificadores pode sempre alterar drasticamente.[0088] This random choice of Vs makes it much more difficult for an opponent to corrupt some of the verifiers in Vs. In fact, the set of verifiers can always change dramatically.

[0089] Idealmente, os verificadores em Vs são selecionados através de um método de classificação secreta. Em tal método, um usuário v aprende secretamente se é um verificador em Vs, mas pode provar isso para outros, se esse for de fato o caso. Por exemplo, v pode usar uma chave secreta do mesmo para computar se pertence a Vs. Por exemplo, v pode computar SIGy (S, P) e verificar se a sequência de dados assim computada satisfaz uma determinada propriedade. Uma tal propriedade, sem que qualquer limitação seja pretendida, pode ser ter o valor SIGy (S, P) ou seu hash menor que um determinado número t. De fato, SIGy (S, P) como qualquer outra sequência de dados, pode ser interpretado exclusivamente como um número, e esse número é facilmente comparado com o número “alvo” t. Por exemplo, se t = 0,001, então, a probabilidade de que H(SIGvy (S, P)) té 1 em um mil, se a função criptográfica H for tratada como uma função aleatória. Consequentemente, nesse exemplo, 1 em um mil dos usuários possíveis consiste em verificadores em Vs. Deve-se observar que o conjunto de verificador Vs desse exemplo é verificável. De fato, se v pertencer a Vs, então, v pode provar que esse é o caso liberando sua assinatura SIGv(S, P). De fato, dada essa sequência de dados, qualquer um poderia dizer se possui a propriedade desejada que determina que pertence a Vs. Mas até v revelar SIGyv (S, P), seria muito difícil para um adversário corromper v, pelo simples fato de que não sabe quem é v. De fato, v é selecionado secretamente, devido ao fato de que é o único que conhece a chave secreta (sua chave de assinatura secreta no exemplo acima) que determina se v pertence a Vs. De fato, a escolha de Vs através da classificação secreta é muito segura.[0089] Ideally, the verifiers in Vs are selected using a secret classification method. In such a method, a user secretly learns whether he is a checker in Vs, but can prove it to others, if that is indeed the case. For example, v can use a secret key of the same to compute if it belongs to Vs. For example, v can compute SIGy (S, P) and check if the data sequence thus computed satisfies a certain property. Such a property, without any limitation being intended, may have the value SIGy (S, P) or its hash less than a certain number t. In fact, SIGy (S, P) like any other data stream, can be interpreted exclusively as a number, and that number is easily compared to the “target” number t. For example, if t = 0.001, then the probability that H (SIGvy (S, P)) is 1 in a thousand, if the cryptographic function H is treated as a random function. Consequently, in this example, 1 in a thousand of possible users consists of verifiers in Vs. It should be noted that the set of verifier Vs in this example is verifiable. In fact, if v belongs to Vs, then v can prove that this is the case by releasing his SIGv (S, P) signature. In fact, given this string of data, anyone could say that they have the desired property that determines that it belongs to Vs. But until v reveals SIGyv (S, P), it would be very difficult for an opponent to corrupt v, simply because do not know who v. In fact, v is selected secretly, due to the fact that it is the only one who knows the secret key (your secret signature key in the example above) that determines whether v belongs to Vs. In fact, the choice of Vs through secret classification it is very safe.

4. VERIFICAÇÃO.4. VERIFICATION.

[0090] “Quando o conjunto de contratos inteligentes S é registrado (aparece) na cadeia de blocos, cada verificador v em Vs verifica a correção semântica de cada invocação | em S e, então, autentica e propaga suas respostas.[0090] “When the set of smart contracts S is registered (appears) in the block chain, each verifier v in Vs verifies the semantic correction of each invocation | in S and then authenticate and propagate your responses.

[0091] Se o conjunto Vs for selecionado através da classificação secreta, então, v também propaga uma prova de que de fato pertence a Vs.[0091] If the set Vs is selected through secret classification, then v also propagates proof that it actually belongs to Vs.

[0092] O verificador v pode autenticar sua resposta sobre cada | em S separadamente. Por exemplo, mediante a computação e propagação de SIGvy (1, valid).[0092] The verifier v can authenticate its answer on each | in S separately. For example, by computing and propagating SIGvy (1, valid).

[0093] O verificador v também pode autenticar todas as suas respostas juntas, indicando quais invocações são válidas e quais não são. Por exemplo, se as invocações em S forem |1, 12, l3, la,..., e as invocações |, l3,... forem válidas e as invocações |2, l1,... forem inválidas, então, v pode computar e propagar: SIGÁ(R, valid). (Ia, invalid), (Iz, valid), (Ia, invalid), ...)[0093] The verifier v can also authenticate all its responses together, indicating which invocations are valid and which are not. For example, if the invocations in S are | 1, 12, l3, la, ..., and the invocations |, l3, ... are valid and the invocations | 2, l1, ... are invalid, then, v can compute and propagate: SIGÁ (R, valid). (Ia, invalid), (Iz, valid), (Ia, invalid), ...)

[0094] Mais compactamente, v pode usar 1 para indicar validade e O para indicar a invalidade. Dessa forma, para o exemplo acima, pode autenticar todas as suas respostas juntas mediante a propagação de SIGA 1), 02,0), 03,1), (14,0);---) mais compactamente ainda, se a invocação em S, |l1, 12, la, la,..., são realmente ordenadas de alguma maneira predeterminada e inequívoca, no caso acima v pode propagar SIGvy (1, 0, 1, O,...). Ou seja, o primeiro 1, que está na primeira posição, indica que a primeira transação, ou seja, l1, é válida; o primeiro O, que está na posição 2, indica que a segunda transação, ou seja, |2 é inválida; e assim por diante.[0094] More compactly, v can use 1 to indicate validity and O to indicate invalidity. Thus, for the example above, you can authenticate all your answers together by propagating SIGA 1), 02.0), 03.1), (14.0); ---) even more compactly, if the invocation in S, | l1, 12, la, la, ..., they are actually ordered in some predetermined and unambiguous way, in the case above v can propagate SIGvy (1, 0, 1, O, ...). That is, the first 1, which is in the first position, indicates that the first transaction, that is, l1, is valid; the first O, which is in position 2, indicates that the second transaction, that is, | 2 is invalid; and so on.

[0095] O verificador vtambém pode autenticar suas respostas em conjunto, porém, de modo a permitir que se extraia a resposta autenticada de v sobre uma invocação individual em S. Por exemplo, v pode construir uma árvore de Merkle, cada folha da mesma armazena a resposta de v sobre uma invocação separada em S e, então, pode autenticar o valor armazenado na raiz da árvore de Merkle.[0095] The verifier v can also authenticate its responses together, however, in order to allow extracting the authenticated response from v about an individual invocation in S. For example, v can build a Merkle tree, each leaf from the same store the response of v on a separate invocation in S and then can authenticate the value stored at the root of the Merkle tree.

[00986] Um verificador honesto em Vs apenas fornece a resposta correta (e, dessa forma, uma única resposta) sobre cada invocação lemS.[00986] An honest Vs checker just provides the correct answer (and thus a single answer) about each lemS invocation.

[0097] “Qualquer que seja o método que os verificadores em Vs podem usar para autenticar quais invocações de S são consideradas válidas e quais são consideradas inválidas, uma invocação | em S pode ser considerada correta, se pelo menos um determinado número X dos verificadores em Vs autenticar que | é semanticamente válida, e incorreta de outro modo. Alternativamente, | pode ser considerada incorreta, se pelo menos um determinado número Y dos verificadores em Vs autenticar que | é semanticamente incorreta. Para maximizar a significância, X e Y são escolhidos para serem grandes o suficiente para que, quando a maioria dos verificadores em Vs é honesta, (a) cada invocação | em S que é semanticamente válida seja considerada correta e não seja considerada incorreta; e de modo similar, (b) cada invocação | em S que é semanticamente inválida será considerada incorreta e não será considerada correta.[0097] “Whatever the method that verifiers in Vs can use to authenticate which invocations of S are considered valid and which are considered invalid, an invocation | in S can be considered correct, if at least a certain number X of the verifiers in Vs authenticates that | it is semantically valid, and otherwise incorrect. Alternatively, | can be considered incorrect if at least a certain Y number of verifiers in Vs authenticates that | it is semantically incorrect. To maximize significance, X and Y are chosen to be large enough that, when most verifiers in Vs are honest, (a) each invocation | in S that is semantically valid be considered correct and not considered incorrect; and similarly, (b) each invocation | in S that is semantically invalid it will be considered incorrect and will not be considered correct.

[0098] “Discussão e Detalhes Adicionais Ter os verificadores em Vs que propagam suas respostas autenticadas sobre a validade semântica das invocações em S não é o suficiente. Por exemplo, um usuário que se une recentemente ao sistema e aprende toda a cadeia de blocos até agora pode não ter ideia do que foi propagado antes de se unir. Consequentemente, embora veja que uma invocação | foi registrada na cadeia de blocos, não sabe se | é correta ou não. Dessa forma, é importante registrar um "veredicto" final sobre | na própria cadeia de blocos.[0098] “Discussion and Additional Details Having verifiers in Vs that propagate their authenticated responses about the semantic validity of invocations in S is not enough. For example, a user who recently joined the system and learned the entire chain of blocks so far may have no idea what was propagated before joining. Consequently, although I see that an invocation | was registered in the block chain, does not know if | is correct or not. Therefore, it is important to record a final "verdict" on | in the block chain itself.

[0099] “Lembre-se de que as árvores de Merkle são muito conhecidas na literatura. Uma árvore de Merkle permite autenticar muitas partes de informações, armazenadas nos nós da árvore, em relação ao valor r armazenado na raiz da árvore. Para autenticar qualquer valor v armazenado em um nó da árvore, é necessário fornecer uma trajetória de autenticação, da raiz ao nó que armazena v. Tal trajetória pode ser muito mais curta (por exemplo, logaritmicamente mais curta) que a sequência de valores autenticados na árvore. Se o valor r não for conhecido, para autenticar um valor v armazenado em um nó da árvore, um indivíduo pode autenticar r separadamente (por exemplo, através de uma assinatura digital) e, então, fornecer uma trajetória de autenticação para v em relação a r.[0099] “Remember that Merkle trees are well known in the literature. A Merkle tree allows to authenticate many pieces of information, stored in the nodes of the tree, in relation to the value r stored in the root of the tree. To authenticate any v value stored on a node in the tree, it is necessary to provide an authentication path, from root to the node that stores v. Such a trajectory can be much shorter (for example, logarithmically shorter) than the sequence of authenticated values in the tree. If the value r is not known, to authenticate a value v stored in a node in the tree, an individual can authenticate r separately (for example, via a digital signature) and then provide an authentication path for v against r.

5. VEREDICTOS.5. VERDICTES.

[00100] Um usuário u que constrói um novo bloco pode incluir em tal bloco não apenas transações comuns válidas (por exemplo, pagamentos válidos) que ainda não aparecem nas cadeias de blocos, mas também o veredicto final, ou seja, informações sobre a correção ou a incorreção, conforme o caso, sobre invocações anteriormente registradas na cadeia. De preferência, tais informações são fornecidas para transações para quais nenhum veredicto final apareceu ainda na cadeia.[00100] A user u who builds a new block can include in that block not only valid common transactions (for example, valid payments) that do not yet appear in the block chains, but also the final verdict, that is, information about the correction or the inaccuracy, as the case may be, of invocations previously registered in the chain. Preferably, such information is provided for transactions for which no final verdict has yet appeared in the chain.

[00101] Considera-se S como um conjunto de invocações anteriormente registradas na cadeia de blocos e u um usuário que constrói um novo bloco B. Então, após o recebimento das respostas de suficientemente muitos verificadores em Vs - a fim de aprender, para cada | em S, se | está correta ou não - u pode incluir em B o veredicto final sobre invocações em S (por exemplo, todas as invocações em S). Tal veredicto final também pode incluir informações que identificam o próprio conjunto S e é, de preferência, autenticado. Se u autentica B, então, tal veredito é automaticamente autenticado por u. Alternativamente, u pode autenticar separadamente o veredicto final sobre invocações em S. Por exemplo, para especificar o veredicto final sobre invocações em S, u pode usar um dos métodos usados por um verificador em Vs para transmitir sua resposta sobre a validade semântica de invocações em S.[00101] S is considered as a set of invocations previously registered in the block chain and u is a user who builds a new B block. Then, after receiving the answers from sufficiently many verifiers in Vs - in order to learn, for each | in S, if | is correct or not - u can include in B the final verdict on S invocations (for example, all S invocations). Such a final verdict may also include information that identifies the set S itself and is preferably authenticated. If u authenticates B, then this verdict is automatically authenticated by u. Alternatively, u can separately authenticate the final verdict on summons in S. For example, to specify the final verdict on summons in S, u can use one of the methods used by a verifier in Vs to convey his answer about the semantic validity of summons in S S.

[00102] Alternativamente, u pode incluir no bloco as respostas autenticadas de suficientemente muitos verificadores de Vs a fim de permitir que se determine partir de tais respostas incluídas, invocações em S que são válidas e invocações de S que não são. Possivelmente, juntamente com tais respostas, u também pode incluir uma ou mais sequências de dados, provando que os verificadores em questão pertencem, de fato, a Vs.[00102] Alternatively, u can include in the block the authenticated responses of sufficiently many Vs verifiers to allow it to be determined from such included responses, invocations in S that are valid and invocations of S that are not. Possibly, along with such responses, u may also include one or more strings of data, proving that the verifiers in question actually belong to you.

[00103] Alternativamente, u pode incluir em seu bloco as respostas sobre S de alguns verificadores de Sv, de preferência, verificadores cujas respostas não foram ainda registradas na cadeia de blocos, embora a correção de invocações em S não possa ser deduzida apenas a partir de tais informações incluídas. No entanto, um usuário pode deduzir a correção de invocações de S sobre múltiplos blocos. O veredito final sobre uma invocação | de S pode, de fato, ser alcançado quando respostas suficientes gravadas na cadeia atestam a correção ou a incorreção (qualquer que seja o caso) de |.[00103] Alternatively, u can include in its block the answers about S of some Sv verifiers, preferably verifiers whose answers have not yet been registered in the block chain, although the correction of invocations in S cannot be deduced only from of such information included. However, a user can deduce the correction of S invocations over multiple blocks. The final verdict on an invocation | de S can, in fact, be achieved when sufficient responses recorded in the chain attest to the correction or incorrectness (whatever the case may be) of |.

[00104] O usuário u pode incluir nas informações de B sobre a correção de todas as invocações em S, ou apenas uma ou mais das mesmas. Por exemplo, o mesmo pode incluir em B uma ou mais respostas de verificadores em Vs sobre uma ou mais invocações | em S. Ou o mesmo pode incluir informações das quais uma pessoa pode deduzir a correção de pelo menos alguma transação (ou transações) em S. Se os verificadores em Vs autenticam suas respostas sobre a validade das invocações em S de uma maneira a possibilitar que uma pessoa extraia sua resposta autenticada sobre apenas algumas transações | em S, então, u pode incluir tal autenticação extraída sobre |. Por exemplo, se um verificador v em Vs autentica essa resposta sobre as invocações em S autenticando-se a raiz r de uma árvore de Merkle, então, para incluir em B a autenticação de v de uma invocação | em S, u pode incluir autenticação de v de r e uma trajetória de autenticação de r para um valor que inclui resposta de i sobre a validade del.[00104] User u can include in B's information about the correction of all invocations in S, or just one or more of them. For example, it may include in B one or more verifier responses in Vs about one or more invocations | in S. Or it can include information from which a person can deduce the correction of at least some transaction (or transactions) in S. If the verifiers in Vs authenticate their answers about the validity of invocations in S in a way that allows them to a person extract their authenticated response on just a few transactions | in S, then u can include such authentication extracted over |. For example, if a verifier v in Vs authenticates this response to invocations in S by authenticating the root r of a Merkle tree, then to include in B the authentication of v of an invocation | in S, u can include authentication of v of r and an authentication path of r for a value that includes response from i on the validity of del.

[00105] Discussão e Detalhes Adicionais. Um bloco B pode ser considerado válido não apenas se suas transações comuns foram válidas,[00105] Discussion and Additional Details. A block B can be considered valid not only if its common transactions were valid,

mas, também se seus vereditos finais sobre invocações anteriormente registradas forem válidos.but also if your final verdicts on invocations previously recorded are valid.

[00106] Em uma cadeia de blocos que depende de prova de trabalho de modo a produzir novos blocos, uma mineração honesta não liga um novo bloco a um bloco inválido.[00106] In a chain of blocks that depends on proof of work in order to produce new blocks, honest mining does not link a new block to an invalid block.

[00107] Em uma cadeia de blocos, como Algorand, em que um novo bloco B é proposto e, então, votado ou estabelecido por conjuntos apropriados de usuários (por exemplo, um conjunto apropriado de verificadores) de modo a ser adicionado na cadeia, um bloco invalido pode não ser, provavelmente, votado ou estabelecido.[00107] In a block chain, like Algorand, where a new B block is proposed and then voted or established by appropriate sets of users (for example, an appropriate set of verifiers) in order to be added to the chain, an invalid block may probably not be voted on or established.

[00108] O protocolo pode permitir a execução simultânea de um dado contrato, ou impor uma ordem específica de execução dentre execuções de C, que incluem negligenciar algumas das tais execuções. Por exemplo, se uma invocação | de um dado contrato C é registrada na cadeia de blocos, o protocolo pode evitar que outra invocação de C seja registrada na cadeia de blocos, até que um veredito final sobre | apareça na cadeia de blocos. Em particular, um usuário u que constrói um novo bloco B pode não incluir em B duas ou mais execuções de C. Alternativamente, duas ou mais invocações de C podem aparecer, porém, uma delas é escolhida (por exemplo, de alguma maneira predeterminada) para ser executada primeiro. A outra (ou outras) pode nunca ser executada, ou executada apenas após um veredito final! sobre a primeira ter sido alcançado. Ainda, alternativamente, uma é escolhida para ser executada primeiro e, então, a segunda e assim por diante, dependendo do tipo de contrato e o que o contrato especifica.[00108] The protocol may allow the simultaneous execution of a given contract, or impose a specific order of execution among C executions, which include neglecting some of those executions. For example, if an invocation | of a given C contract is registered in the block chain, the protocol can prevent another invocation of C from being registered in the block chain, until a final verdict on | appear in the block chain. In particular, a user u who builds a new B block may not include in B two or more executions of C. Alternatively, two or more invocations of C may appear, however, one of them is chosen (for example, in some predetermined way) to run first. The other (or others) can never be performed, or performed only after a final verdict! about the first one having been achieved. Alternatively, one is chosen to be executed first and then the second and so on, depending on the type of contract and what the contract specifies.

[00109] Uma invocação | de um contrato C também pode incluir um número de bloco r, de modo que nenhum veredito final sobre | possa entrar na cadeia de blocos após o bloco r. Alternativamente, tal r pode ser determinado automaticamente, com base no bloco em que | é registrado e no número de etapas declaradas em |. Isso possibilita uma nova invocação de C caso a original tenha permanecido sem veredito final. Em tal caso, é possível considerar reembolsar automaticamente o usuário responsável pela invocação | para a taxa paga quando | foi registrado na cadeia de blocos.[00109] An invocation | of a C contract can also include a block number r, so that no final verdict on | can enter the block chain after block r. Alternatively, such r can be determined automatically, based on the block in which | is registered and the number of steps declared in |. This allows for a new C invocation if the original has remained without a final verdict. In such a case, it is possible to consider automatically reimbursing the user responsible for the invocation | for the fee paid when | has been registered in the block chain.

[00110] Uma vez que (uma indicação do) o veredito final de uma invocação | de um contrato C entra na cadeia de blocos, se o veredito for positivo, então, um usuário x que percebe isso atualiza apropriadamente o estado atual de C e considera todos os efeitos líquidos relevantes que ocorreram. (Por exemplo, se a invocação | declara uma dada forma de pagamento de um usuário para outro usuário, então, o dinheiro adquirido por tais usuários é automaticamente atualizado.) Se o veredito final for negativo, então, nenhuma atualização do estado de C ocorre e nenhum efeito líquido ocorre. No entanto, uma taxa adicional pode ser imposta automaticamente ao usuário responsável pela invocação |.[00110] Since (an indication of) the final verdict of an invocation | of a contract C enters the chain of blocks, if the verdict is positive, then a user x who realizes this appropriately updates the current state of C and considers all the relevant net effects that have occurred. (For example, if the invocation | declares a given form of payment from one user to another user, then the money acquired by such users is automatically updated.) If the final verdict is negative, then no update of C status occurs and no net effect occurs. However, an additional fee can be automatically imposed on the user responsible for the invocation.

1 ANÁLISE GERAL1 GENERAL ANALYSIS

[00111] Segurança, Eficiência e Custo A resposta de um único verificador v sobre as invocações de um dado conjunto S seria suficiente, se uma pessoa estivesse certa de que v eram honestos. Porém, obviamente, um bloco construtor/proponente ou qualquer outro pode não saber quais verificadores são honestos. No entanto, é fácil estar confiante sobre a honestidade de uma maior parte dos verificadores. Assim, se verificadores suficientes, preferencialmente selecionados aleatoriamente, informam todos os outros usuários quais invocações de S são válidas e quais não são, então é possível aprender a correção das invocações de S, sem ter que verificar sua validade propriamente! Essa é a razão do esquema inventivo ser seguro e eficiente ao mesmo tempo.[00111] Safety, Efficiency and Cost The response of a single verifier v on the invocations of a given set S would be sufficient, if a person was certain that v were honest. However, obviously, a builder / proponent block or any other may not know which verifiers are honest. However, it is easy to be confident about the honesty of most verifiers. Thus, if sufficient verifiers, preferably selected at random, inform all other users which invocations of S are valid and which are not, then it is possible to learn the correction of invocations of S, without having to verify its validity properly! This is why the inventive scheme is both safe and efficient at the same time.

[00112] Por exemplo, se 80% dos usuários são honestos, o número de verificadores de | em S é de cerca de 500, então, a resposta de 300 verificadores pode, de fato, assegurar segurança extremamente alta. Ao mesmo tempo, se S contém, por exemplo, 100 invocações, então, em média, apenas 5 usuários verificam a validade de cada invocação, o que torna o sistema extremamente eficiente, além de extremamente seguro.[00112] For example, if 80% of users are honest, the number of | in S it is about 500, so the response from 300 verifiers can, in fact, ensure extremely high security. At the same time, if S contains, for example, 100 invocations, then, on average, only 5 users check the validity of each invocation, which makes the system extremely efficient, in addition to being extremely secure.

[00113] Visto que relativamente poucos verificadores (especialmente em média!) verificam diretamente a validade de uma execução declarada, em que a taxa necessária para registrar uma dada execução pode ser muito baixa. De fato, é necessário reembolsar os custos computacionais de pouquíssimos usuários: no exemplo acima de apenas 5 usuários, em média, em vez de — diga-se — todos os usuários no sistema. A taxa necessária para invocar um contrato inteligente é frequentemente denominada “gás”. Consequentemente, no sistema inventivo, Gás é muito mais econômico para tipos de contratos diversos e desejáveis![00113] Since relatively few verifiers (especially on average!) Directly check the validity of a declared execution, in which the fee required to register a given execution can be very low. In fact, it is necessary to reimburse the computational costs of very few users: in the example above, only 5 users, on average, instead of - say - all users in the system. The fee required to invoke a smart contract is often called "gas". Consequently, in the inventive system, Gas is much more economical for different and desirable types of contracts!

[00114] Ótima segurança, juntamente com ótima eficiência, e baixos custos podem tornar o sistema inventivo muito atraente para uma grande classe de contratos inteligentes, e podem, de fato, permitir o uso em grande escala de tais contratos.[00114] Optimal security, coupled with optimum efficiency, and low costs can make the inventive system very attractive for a large class of smart contracts, and can, in fact, allow for the large-scale use of such contracts.

[00115] De fato, com o sistema inventivo, contratos inteligentes podem ter tempo de execução muito mais longo que em outros sistemas, o que provoca ainda uma quantidade muito menor de computação total.[00115] In fact, with the inventive system, smart contracts can have a much longer execution time than in other systems, which still causes a much smaller amount of total computation.

[00116] Ponderação para Dinheiro Nota-se que, ao longo deste pedido, o conjunto de verificadores Vs de um dado conjunto S de invocações pode ser selecionado, como em Algorand ou outras cadeias de bloco, pelo menos parcialmente com base em alguma forma de prova de aposta, com base na quantidade de dinheiro que se tem no sistema em um dado momento (por exemplo, quando S é registrado na cadeia de blocos). De fato, um dado usuário pode inserir Vs com multiplicidade maior que um. De fato, Sy pode consistir em um número de votos de um conjunto de verificadores, em que cada verificador pode ter mais votos, dependendo da quantidade de dinheiro que tem. Isto é, o sistema inventivo se aplica também quando se assume que a maior parte do dinheiro está em mãos honestas.[00116] Weighting for Money It is noted that, throughout this request, the set of Vs verifiers of a given set of invocations can be selected, as in Algorand or other block chains, at least partially based on some form of proof of bet, based on the amount of money you have in the system at any given time (for example, when S is registered in the block chain). In fact, a given user can enter Vs with a multiplicity greater than one. In fact, Sy can consist of a number of votes from a set of verifiers, where each verifier can have more votes, depending on the amount of money he has. That is, the inventive system also applies when it is assumed that most of the money is in honest hands.

[00117] Eficiência Computacional Nota-se que, embora n, o número de usuários no sistema, possa ser enorme (por exemplo, n = 100M), apenas T (por exemplo, T = 500) verificadores precisam executar C (entrada). Assim, o custo computacional total de uma execução de C com a tecnologia inventiva é < 500 etapas em vez de 100 M etapas. Consequentemente, contratos inteligentes em Algorand podem ter tempo de execução muito mais longo do que em outros sistemas, e provocar ainda uma quantidade muito menor de computação total. Em outras palavras, a nova tecnologia desfruta de flexibilidade muito maior e permite o uso de uma classe muito maior de contratos inteligentes.[00117] Computational Efficiency Note that, although n, the number of users in the system, can be huge (for example, n = 100M), only T (for example, T = 500) verifiers need to execute C (input). Thus, the total computational cost of a C execution with the inventive technology is <500 steps instead of 100 M steps. Consequently, smart contracts in Algorand can have a much longer execution time than in other systems, and still cause a much smaller amount of total computation. In other words, the new technology enjoys much greater flexibility and allows the use of a much larger class of smart contracts.

[00118] Eficiência de Custo A eficiência computacional da nova tecnologia de contrato inteligente pressupõe automaticamente eficiência de custo. Considerar invocar uma execução de um contrato inteligente C que exige 1 hora de computação em um sistema com 100 M de usuários. Em tal sistema, exige-se que a taxa de uma invocação tradicional de C seja necessariamente muito alta, pois deve cobrir essencialmente o custo total de 100 M de horas de computação. Por outro lado, com a nova tecnologia, a taxa correspondente para a mesma invocação de C deve cobrir apenas 500 horas de computação. De fato, esse último custo não é apenas modesto, mas também se mantém igual mesmo que o número total de usuários no sistema seja IB ou maior! Colocado de outra maneira, no novo sistema inventivo, “Gás” é muito mais econômico para tipos de contratos diversos e desejáveis![00118] Cost Efficiency The computational efficiency of the new smart contract technology automatically assumes cost efficiency. Consider invoking an execution of a smart C contract that requires 1 hour of computing on a system with 100 M users. In such a system, the rate of a traditional C invocation is required to be necessarily very high, as it must essentially cover the total cost of 100 M of computing hours. On the other hand, with the new technology, the corresponding fee for the same C invocation should only cover 500 hours of computing. In fact, this last cost is not only modest, but also remains the same even if the total number of users in the system is IB or higher! Put another way, in the new inventive system, “Gas” is much more economical for different and desirable types of contracts!

[00119] Eficiência de Produtividade Com a tecnologia inventiva, uma invocação | de um contrato C registrado em um bloco B dispara a execução de C, através de um conjunto de verificadores apropriados, “cadeia desligada. Assim, mesmo que tal execução demore muito, não é necessário muito tempo para verificar a validade de bloco B. Assim, a geração do próximo bloco pode começar imediatamente. Em outras palavras, o sistema inventivo pode ter um rendimento muito alto. Uma vez que os verificadores apropriados de | concluem suas execuções, mesmo que tal execução demore muito, o veredito final sobre | entra na cadeia de blocos sem retardar a cadeia. Por outro lado, no método tradicional, se | é lançado no bloco B, a invocação de e deve ser finalizada antes da produção do próximo bloco. Portanto, a nova tecnologia torna possível produzir novos blocos em alguns segundos, mesmo que os blocos contenham contratos inteligentes cujas execuções exigiram individualmente ou no total, uma hora de computação.[00119] Productivity Efficiency With inventive technology, an invocation | of a contract C registered in a block B triggers the execution of C, through a set of appropriate verifiers, “chain disconnected. Thus, even if such an execution takes a long time, it does not take much time to check the validity of block B. Thus, the generation of the next block can begin immediately. In other words, the inventive system can have a very high yield. Once the appropriate | conclude their executions, even if such execution takes too long, the final verdict on | enters the block chain without slowing down the chain. On the other hand, in the traditional method, if | is launched in block B, the invocation of and must be completed before the next block is produced. Therefore, the new technology makes it possible to produce new blocks in a few seconds, even if the blocks contain smart contracts whose executions required individually or in total, one hour of computation.

2 VARIANTES E ADIÇÕES2 VARIANTS AND ADDITIONS

[00120] Acima foi apresentada a modalidade preferencial dos inventores. Aqueles versados na técnica percebem que muitas outras variantes e alternativas são possíveis, em que todas estão inseridas no escopo da invenção. Abaixo, foram consideradas apenas algumas delas.[00120] Above, the preferred modality of the inventors was presented. Those skilled in the art realize that many other variants and alternatives are possible, all of which fall within the scope of the invention. Below, only a few of them were considered.

[00121] Vereditos Finais sem Registro de Invocação Na modalidade preferencial, uma invocação | deve ser registrada na cadeia de blocos, de modo a disparar sua “execução de sistema”. Alternativamente, no entanto, | pode não ser colocado na cadeia de blocos, porém, (uma indicação de) seu veredito final pode. Por exemplo, | pode ser apenas propagado, até ser percebido e processado por um número suficiente de seus verificadores, que, então, propagam suas respostas individuais sobre |, e apenas uma vez o mesmo observa respostas coerentes suficientes, se o construtor de um novo bloco B incluir em informações de B sobre o veredito final de |. (Por exemplo, as respostas individuais assinadas de alguns verificadores ou verificadores suficientes de |.)[00121] Final Verdicts without Registration of Invocation In the preferred modality, an invocation | must be registered in the block chain, in order to trigger its “system execution”. Alternatively, however, | may not be placed in the block chain, however, (an indication of) your final verdict may. For example, | it can only be propagated, until it is perceived and processed by a sufficient number of its verifiers, who then propagate their individual responses over |, and only once does it observe sufficient coherent responses, if the builder of a new B block includes in information from B on the final verdict of |. (For example, signed individual responses from some verifiers or sufficient verifiers from |.)

[00122] Medidas Adicionais e Consequências Na invocação de um contrato inteligente, o número de etapas tomadas é uma medida importante da complexidade da invocação, e os pagamentos/efeitos finais são algumas de suas consequências importantes. No entanto, existem medidas adicionais e consequências, e todas elas podem ser lidadas dentro da invenção dos inventores. Abaixo alguns exemplos são detalhados.[00122] Additional Measures and Consequences In invoking a smart contract, the number of steps taken is an important measure of the complexity of the invocation, and the final payments / effects are some of its important consequences. However, there are additional measures and consequences, and they can all be dealt with within the inventors' invention. Below some examples are detailed.

[00123] Contratos inteligentes poderiam ser programas arbitrários, e a execução de um contrato C pode disparar automaticamente outras execuções de C propriamente, ou outros contratos inteligentes. (Frequentemente, de fato, contratos inteligentes são escritos em uma linguagem de Turing completa.) Esse fato pode ser uma vantagem, mas também uma desvantagem, e uma pessoa pode desejar conter o número de chamadas que uma invocação | de contrato C pode provocar para ser feita.[00123] Smart contracts could be arbitrary programs, and the execution of a C contract can automatically trigger other executions of C itself, or other smart contracts. (Often, in fact, smart contracts are written in full Turing language.) This fact can be an advantage, but also a disadvantage, and a person may wish to contain the number of calls that an invocation | of contract C can cause to be made.

[00124] Por exemplo, o número de chamadas, nº de chamadas, pode ser especificado dentro da invocação; (como um componente separado e/ou como parte de outros componentes), e a taxa, taxa, de | pode ser ajustada de modo a depender do nº de chamadas. Tal dependência pode ser simplesmente proporcional, ou pode aumentar drasticamente com o nº de chamadas. Um verificador de | pode, assim, ser solicitado a verificar qual o nº de chamadas é correto, e também a taxa, em relação a todas as medidas de complexidade, que incluem o nº de chamada.[00124] For example, the number of calls, number of calls, can be specified within the invocation; (as a separate component and / or as part of other components), and the fee, fee, of | can be adjusted to depend on the number of calls. Such dependency can be simply proportional, or it can increase dramatically with the number of calls. A checker | therefore, you may be asked to verify which number of calls is correct, and also the rate, in relation to all measures of complexity, which include the number of calls.

[00125] Alternativa, ou adicionalmente, uma pessoa pode limitar o número de chamadas. Por exemplo, se o nº de chamadas declarado for maior que uma dada ligação, ou se o número de chamadas C realmente se torna maior que o nº de chamadas, então, independentemente dos valores de nº etapas e taxa, a invocação é considerada inválida. Todos os mecanismos abordados acima para vereditos individuais e finais se aplicam de maneira direta a essa nova medida de complexidade.[00125] Alternatively, or additionally, a person can limit the number of calls. For example, if the declared number of calls is greater than a given call, or if the number of C calls actually becomes greater than the number of calls, then, regardless of the number of steps and rate, the invocation is considered invalid. All of the mechanisms discussed above for individual and final verdicts apply directly to this new measure of complexity.

[00126] Além disso, uma pessoa pode distinguir entre chamadas comuns e “chamadas aninhadas'. Por exemplo, se uma execução e de C, provoca a execução e' de contrato C, e o último, por sua vez, provoca a execução e” de um contrato C”, então, e” pode ser considerado uma chamada aninhada, de “nível 2. De maneira similar, uma pessoa pode ter chamadas aninhadas de nível 3, 4, etc. Nota-se também que chamadas aninhadas e/ou seus níveis podem ser declarados em uma invocação |, e a taxa, a validade e o manuseio de | podem ser estendidos de maneira direta, de modo a incluir essas informações declaradas adicionais.[00126] In addition, a person can distinguish between ordinary calls and 'nested calls'. For example, if an execution e of C, causes the execution e 'of contract C, and the last one, in turn, causes the execution e ”of a contract C”, then, e ”can be considered a nested call, of “Level 2. Similarly, a person may have nested calls of level 3, 4, etc. Note also that nested calls and / or their levels can be declared in an invocation |, and the rate, validity and handling of | can be extended directly to include this additional declared information.

[00127] Uma pessoa pode considerar também, adicionalmente aos efeitos líquidos diretos de uma invocação |, os efeitos de suas chamadas. Por exemplo, uma pessoa pode indicar explicitamente em | a quantidade total de dinheiro necessária para ser transferida, diretamente ou por meio de suas chamadas. Novamente, uma pessoa pode proibir chamadas de um dado nível, ou tornar as mesmas mais onerosas do que as chamadas regulares.[00127] A person may also consider, in addition to the direct net effects of an invocation, the effects of his calls. For example, a person can indicate explicitly in | the total amount of money needed to be transferred, either directly or through your calls. Again, a person can prohibit calls at a given level, or make them more expensive than regular calls.

[00128] Incentivos. Os verificadores de uma invocação ou conjunto de invocações podem ser incentivadas através de recompensas apropriadas. Em particular, um verificador de uma invocação | pode ser elegível para uma recompensa se sua resposta sobre | concordar com o veredito final sobre |.[00128] Incentives. Verifiers for an invocation or set of invocations can be encouraged through appropriate rewards. In particular, an invocation checker | may be eligible for a reward if your answer about | agree with the final verdict on |.

[00129] Todos ou alguns (por exemplo, uma amostra de) tais verificadores podem ser recompensados. Os verificadores a serem recompensados podem ser selecionados criptograficamente (por exemplo, através de sorção criptográfica e/ou através da ajuda de um sinalizador aleatório).º Alternativamente, tais verificadores podem ser selecionados através de um construtor de bloco. Os verificadores recompensados de uma invocação | (ou de um conjunto de invocações S) e o veredito final de | (ou * Tal amostra também poderia ser selecionada através de parte especializada, que pode, propriamente, ser selecionada novamente com bastante frequência. Em particular, tal parte pode ser, propriamente, selecionada através de sorteio criptográfico, ao assinar digitalmente um ou mais verificadores para receber uma recompensa, e sua assinatura pode aparecer no bloco.[00129] All or some (for example, a sample of) such verifiers can be rewarded. The verifiers to be rewarded can be selected cryptographically (for example, through cryptographic sorption and / or through the help of a random flag). Alternatively, such verifiers can be selected through a block constructor. The rewarded verifiers of an invocation | (or a set of summons S) and the final verdict of | (or * Such a sample could also be selected through a specialized part, which can properly be selected again quite frequently. In particular, such part can be properly selected through cryptographic draw, by digitally signing one or more verifiers for receive a reward, and your subscription may appear on the block.

de S) podem ser indicados no mesmo bloco.of S) can be indicated in the same block.

[00130] Por exemplo, um bloco construtor u pode inserir nesse bloco o veredito final V para | (ou S), assim como informações que identificam um ou mais verificadores v a serem recompensados. (Alternativamente, informações que identificam os verificadores recompensados podem ser inseridas em um bloco subsequente, e possivelmente também selecionadas por outro bloco construtor/proponente.) Por exemplo, u também pode incluir na cadeia de blocos a prova de que um verificador v é, de fato, atribuído para verificar | (ou S), adicionalmente ao veredito final V, de modo a permitir a verificação da possibilidade de a resposta de v concordar com V. Alternativamente, o construtor pode omitir para incluir V nesse bloco. Por exemplo, é suficiente para incluir apenas v e o veredito individual digitalmente assinado de v, para um único verificador v de | ou para múltiplos tais verificadores cujas respostas são coerentes. De fato, a partir de tais respostas individuais, é possível deduzir qual veredito final V deve ocorrer. Por exemplo, se o bloco contém apenas a resposta individual sobre | de um único verificador v, então, essas informações podem ser usadas para indicar que o veredito final sobre | coincide com o veredito individual de | (e, possivelmente, também indica que v foi alvejado para uma recompensa). Todos os verificadores recompensados podem ser pagos automaticamente uma vez identificados em um bloco.[00130] For example, a building block u can insert the final verdict V for | (or S), as well as information that identifies one or more verifiers v to be rewarded. (Alternatively, information that identifies the rewarded verifiers can be inserted into a subsequent block, and possibly also selected by another constructor / proposer block.) For example, u can also include in the block chain proof that a verifier v is, fact, assigned to check | (or S), in addition to the final verdict V, in order to allow verification of the possibility of the answer of v agreeing with V. Alternatively, the constructor may omit to include V in that block. For example, it is sufficient to include only v and the individual digitally signed verdict of v, for a single verifier v of | or for multiple such verifiers whose responses are consistent. In fact, from such individual responses, it is possible to deduce which final verdict V must occur. For example, if the block contains only the individual answer about | of a single v verifier, then this information can be used to indicate that the final verdict on | coincides with the individual verdict of | (and possibly also indicates that v was targeted for a reward). All rewarded verifiers can be paid automatically once identified in a block.

[00131] Um construtor de bloco honesto pode escolher o verificador (ou verificadores) de | a ser recompensado aleatoriamente, ou de alguma outra maneira. Mesmo que um construtor malicioso possa escolher os mesmos de uma maneira diferente (por exemplo, ao preferir verificadores maliciosos) os verificadores de | ainda são incentivados a relatar suas respostas verdadeiras. De fato, espera-se que a maior parte dos verificadores seja honesta, e assim são, na expectativa, construtores de bloco.[00131] An honest block builder can choose the verifier (or verifiers) from | to be rewarded randomly, or in some other way. Even if a malicious builder may choose them differently (for example, by preferring malicious scanners) the | they are still encouraged to report their true responses. In fact, most verifiers are expected to be honest, and so they are, in expectation, block builders.

[00132] Ademais, de modo a recompensar os verificadores de uma ou mais invocações |, ou para que seus vereditos individuais sejam levados em consideração, pode ser necessária uma evidência de que os verificadores de fato executaram C corretamente. Tal evidência pode incluir algum tipo de prova de CS, um snark ou um stark. Tal evidência fornecida por verificador também poderia ser usada e lançada em um bloco como parte do (ou a evidência inteira sobre o) veredito final sobre |.[00132] Furthermore, in order to reward verifiers for one or more invocations |, or for their individual verdicts to be taken into account, evidence may be required that verifiers have in fact performed C correctly. Such evidence may include some form of CS evidence, a snark or a stark. Such verifier-provided evidence could also be used and thrown in a block as part of (or the entire evidence about) the | final verdict.

[00133] Adicionalmente às recompensas positivas, a cadeia de blocos também pode usar punições. Por exemplo, um verificador v que relata uma resposta sobre uma invocação (ou conjunto de invocações) que é diferente do veredito final sobre sua correção, pode ser multado. Tal multa pode ser automaticamente deduzida do dinheiro que v possui.[00133] In addition to positive rewards, the block chain can also use punishments. For example, a verifier v that reports a response on an invocation (or set of invocations) that is different from the final verdict on its correction, may be fined. Such a fine can be automatically deducted from the money you have.

[00134] A cadeia de blocos também pode considerar registrar de propósito na cadeia de blocos pelo menos uma invocação | que é semanticamente inválida. Isso pode ajudar a localizar (e possivelmente punir) verificadores designados a verificar a validade semântica |, que relatam maliciosamente que | é semanticamente válido (seja diretamente ou ao relatar sobre a validade de um conjunto de invocações que incluem |).[00134] The block chain may also consider purposely registering at least one invocation in the block chain | which is semantically invalid. This can help locate (and possibly punish) verifiers designed to verify semantic validity |, which maliciously report that | it is semantically valid (either directly or when reporting on the validity of a set of invocations that include |).

[00135] Por exemplo, usuários que provocam o registro de invocações que são propositalmente inválidas semanticamente podem não realizar isso por serem maliciosos, mas sim, por terem sido selecionados para ajudar a localizar verificadores maliciosos. De preferência, portanto, a seleção desses usuários ajudantes é secreta (de modo que os verificadores de uma invocação propositalmente inválida semanticamente não tenham ideia de que a invocação é tão inválida) e aleatória (de modo a assegurar que pelo menos alguns usuários ajudantes honestos tenham sido selecionados). Por exemplo, o processo usado para selecionar tais usuários ajudantes pode ser similar àquele para selecionar um verificador v para uma invocação | ou um conjunto de invocações S: um usuário ajudante pode ser selecionado ao assinar digitalmente uma dada quantidade Q deduzível da cadeia de blocos juntamente com outros dados (por exemplo, a sequência “USUÁRIO AJUDANTE”), rabiscar a assinatura e verificar se é menor que um dado número-alvo. Esse processo garante que outros usuários não percebam que um dado usuário u foi selecionado para ser um usuário ajudante, até que u revele uma prova de sua seleção (no exemplo acima sua assinatura digital). Essa prova pode ser revelada após um veredito final sobre uma invocação propositalmente inválida semanticamente | registrada por u ter entrado na cadeia de blocos. Tal prova pode ser inserida na cadeia de blocos tal como uma transação válida. Dessa maneira, a taxa ou qualquer multa que foi imposta ao u, pode ser automaticamente reembolsada ao u (possivelmente, adicionalmente a uma recompensa), uma vez que qualquer um perceba que u atou em conformidade com o protocolo para ajudar a garantir o funcionamento honesto dos contratos inteligentes na cadeia de blocos.[00135] For example, users who provoke the registration of invocations that are purposely semantically invalid may not do this because they are malicious, but because they have been selected to help locate malicious scanners. Preferably, therefore, the selection of these helper users is secret (so that the verifiers of a purposely invalid invocation semantically have no idea that the invocation is so invalid) and random (in order to ensure that at least some honest helper users have selected). For example, the process used to select such helper users may be similar to that for selecting a v checker for an invocation | or a set of invocations S: a helper user can be selected by digitally signing a given quantity deductible from the chain of blocks along with other data (for example, the string “HELP USER”), scribble the signature and verify that it is less than a given target number. This process ensures that other users do not realize that a given user u has been selected to be a helper user, until u reveals proof of their selection (in the example above their digital signature). This evidence can be revealed after a final verdict on a purposely invalid invocation semantically | registered by u having entered the block chain. Such proof can be inserted in the block chain as a valid transaction. In this way, the fee, or any fine that was imposed on u, can be automatically refunded to u (possibly, in addition to a reward), once anyone realizes that u have tied in accordance with the protocol to help ensure honest operation. of smart contracts in the block chain.

3 CONTRATOS INTELIGENTES DECLARATIVOS3 DECLARATIVE INTELLIGENT CONTRACTS

COMPROMETIDOSCOMMITTED

[00136] É descrito agora um tipo especial de contratos inteligentes declarativos: contratos inteligentes declarativos comprometidos (CDSC, abreviadamente). As invocações de tais contratos escondem temporariamente pelo menos alguns efeitos líquidos das execuções correspondentes. Essas invocações podem ser registradas como antes. Sua validade sintática pode ser verificada como antes. Verificadores podem ser atribuídos aos conjuntos de tais invocações como antes. E, o veredito final pode lançado na cadeia de blocos como antes.[00136] A special type of smart declarative contracts is now described: committed smart declarative contracts (CDSC, for short). The invocations of such contracts temporarily conceal at least some net effects of the corresponding executions. These invocations can be recorded as before. Its syntactic validity can be verified as before. Verifiers can be assigned to the sets of such invocations as before. And, the final verdict can be cast on the block chain as before.

[00137] No entanto, verificadores dessas novas invocações não verificam sua validade semântica como antes. Isso ocorre uma vez que essas novas invocações escondem temporariamente pelo menos alguns dos efeitos líquidos das execuções que especificam. Essas invocações incluem,[00137] However, verifiers of these new invocations do not verify their semantic validity as before. This is because these new invocations temporarily hide at least some of the net effects of the executions they specify. These invocations include,

de fato, um comprometimento com tais efeitos líquidos. (Tal comprometimento esconde tais efeitos líquidos, porém, em um ponto no tempo posterior, porém, deixa a porta aberta para revelar provavelmente, em algum ponto no tempo posterior, o que os efeitos líquidos originalmente comprometidos eram.)in fact, a commitment to such net effects. (Such a compromise hides such liquid effects, however, at one point in time later, but leaves the door open to probably reveal, at some point in time later, what the net effects originally compromised were.)

[00138] Assim, um verificador atribuído para verificar uma tal invocação | pode reproduzir a execução e especificada por |, que aprende o que todos os efeitos líquidos de e são, porém, não pode determinar se os efeitos líquidos comprometidos em | são aqueles que ele mesmo computou. Consequentemente, nessa resposta, tal verificador relata seu próprio comprometimento personalizado para os efeitos líquidos de e que ele mesmo computou e se comprometeu em |, sem saber se seus valores coincidem. Tal comprometimento personalizado não pode ser obtido apenas copiando-se o comprometimento correspondente em |, e também não pode ser confiavelmente computado a partir do último comprometimento, ou a partir de qualquer outro comprometimento personalizado. De fato, a ideia em um CDSC é obrigar um verificador de | a aprender o que os efeitos líquidos escondidos por | são e, então, computar e incluir em sua resposta seu próprio comprometimento com tais efeitos. Em um sentido, portanto, cada verificador de | deve atuar independentemente e executar realmente a execução e chamada por |.[00138] Thus, a verifier assigned to verify such an invocation | can reproduce the execution and specified by |, which learns what all the net effects of and are, however, cannot determine whether the net effects compromised in | are those that he computed himself. Consequently, in this response, such a verifier reports his own personalized commitment to the net effects of e that he himself computed and committed to |, without knowing whether their values match. Such a personalized commitment cannot be obtained by just copying the corresponding commitment in |, and it cannot be reliably computed from the last commitment, or from any other personalized commitment. In fact, the idea in a CDSC is to compel a | to learn what the net effects hidden by | and then compute and include in your response your own commitment to such effects. In a sense, therefore, each | must act independently and actually execute the execution and called by.

[00139] Apenas em um ponto posterior, o sistema inventivo revela informações que permitem verificar a correção de |, permitindo-se verificar se os efeitos líquidos comprometidos em | coincidem com os efeitos líquidos comprometidos (de uma maneira personalizada) nas respostas de verificadores suficientes de |. Consequentemente, um veredito final sobre uma invocação individual ou um conjunto de invocações de CDSC pode ser lançado na cadeia de blocos, e incentivos e/ou punições podem ser alocados em usuários como antes, e também de novas maneiras.[00139] Only at a later point, the inventive system reveals information that allows verifying the correction of |, allowing to verify if the net effects compromised in | coincide with the compromised net effects (in a personalized way) on responses from sufficient | verifiers. Consequently, a final verdict on an individual summon or a set of CDSC summons can be launched in the block chain, and incentives and / or punishments can be allocated to users as before, and also in new ways.

[00140] Sem nenhuma restrição destinada, são descritos detalhes adicionais de CDSCs.[00140] Without any intended restrictions, additional details of CDSCs are described.

1. INVOCAÇÕES COMPROMETIDAS.1. COMMITTED INVOCATIONS.

[00141] Uma invocação declarativa comprometida | de um contrato inteligente C específica uma execução e de C (na dada entrada/entradas e estado inicial) e outros dados relevantes, muito parecido com uma invocação declarativa, porém, esconde um conjunto s de efeito líquido de e, incluindo-se, em vez disso, um comprometimento com s.[00141] A compromised declarative invocation | of a C contract specific to an execution and of C (in the given entry / entries and initial state) and other relevant data, much like a declarative invocation, however, it hides a set s of net effect of e, including, in instead, a commitment to s.

[00142] Um comprometimento com um dado valor x permite estabelecer secretamente x em um dado ponto no tempo, porém, provar em um ponto no tempo posterior o que o valor estabelecido x era. Por exemplo, para se comprometer com um conjunto de efeitos líquidos s, | pode incluir h = H (s), para uma dada (resistente à colisão) função hash H. De fato, s é difícil de computar a partir de h, se não tiver ideia sobre s. Ao mesmo tempo, revelar eventualmente s convence qualquer um que conhece h que os revelado é de fato o valor comprometido original. Isso ocorre uma vez que é difícil computar qualquer valor z é s de modo que H(z) = H (s). Alternativamente, | pode se comprometer com um conjunto de efeitos líquidos, incluindo-se separadamente o valor de hash de cada um desses efeitos. Por exemplo, se s consiste em novo estado de C gerado por e, y e pelos ajustes de quantidade do jogador gerados por e, qa1, a2, * * -, então, | pode se comprometer com s incluindo-se H(y'), H(ai), H(a2),.... Ainda, alternativamente, | pode se comprometer com um conjunto de efeitos líquidos Ss incluindo-se o valor de raiz de uma árvore de Merkle cujos nós armazenam os efeitos líquidos em questão. De modo mais geral, o sistema inventivo pode usar outros métodos de comprometimento para esconder temporariamente alguns efeitos líquidos de |.[00142] A commitment to a given value x allows you to secretly establish x at a given point in time, however, to prove at a point in time later what the established value x was. For example, to commit to a set of net effects s, | can include h = H (s), for a given (collision resistant) hash function H. In fact, s is difficult to compute from h, if you have no idea about s. At the same time, eventually disclosing s convinces anyone who knows that the revealed is in fact the original compromised amount. This is because it is difficult to compute any value z is s so that H (z) = H (s). Alternatively, | you can commit to a set of net effects, separately including the hash value of each of these effects. For example, if s consists of a new state of C generated by e, y and the player's quantity adjustments generated by e, qa1, a2, * * -, then | can commit to s including H (y '), H (ai), H (a2), .... Still, alternatively, | can commit to a set of net effects Ss including the root value of a Merkle tree whose nodes store the net effects in question. More generally, the inventive system can use other methods of compromise to temporarily hide some net effects of |.

[00143] Os dados relevantes de uma invocação declarativa (pelo menos parcialmente) comprometida de um contrato inteligente podem ser como em uma invocação declarativa comum.[00143] The relevant data of a declarative invocation (at least partially) of a smart contract can be as in a common declarative invocation.

[00144] Para fins de simplicidade, é possível se referir, simplesmente, a uma invocação declarativa comprometida | como uma invocação declarativa, ou, ainda mais simplesmente, como uma invocação, se o contexto for claro o suficiente. A fim de enfatizar que uma invocação de um contrato inteligente não é uma invocação declarativa comprometida, é possível usar o termo invocação comum.[00144] For the sake of simplicity, it is possible to refer, simply, to a compromised declarative invocation | as a declarative invocation, or, even more simply, as an invocation, if the context is clear enough. In order to emphasize that an invocation of a smart contract is not a compromised declarative invocation, it is possible to use the term common invocation.

[00145] Discussão e Detalhes Adicionais A discussão e detalhes adicionais sobre invocações comuns que são aplicáveis em invocações declarativas comprometidas são estendidas automaticamente para as últimas invocações.[00145] Discussion and Additional Details The discussion and additional details about common invocations that are applicable in committed declarative invocations are automatically extended to the latest invocations.

[00146] Nota-se que uma invocação comprometida, assinada digitalmente por um usuário de invocação apropriado, continua a autenticar todos os efeitos líquidos da execução relevante de C, embora um conjunto s delas possa ser autenticado de uma maneira indireta, isto é, autenticando-se um comprometimento com s.[00146] It is noted that a compromised invocation, digitally signed by an appropriate invocation user, continues to authenticate all the net effects of the relevant C execution, although a set of them can be authenticated in an indirect way, that is, by authenticating a commitment to s.

[00147] Como deve ser visto, o sistema inventivo permite que todos os usuários que observam a cadeia de blocos determinem se uma invocação comprometida | de um contrato C está correta, sem sobrecarregar todos os usuários ou muitos usuários para computar a execução e especificada por |.[00147] As it should be seen, the inventive system allows all users who observe the chain of blocks to determine whether a compromised invocation | of a C contract is correct, without overloading all users or many users to compute the execution and specified by |.

[00148] Agora será visto como tal invocação comprometida | é registrada.[00148] Now it will be seen as such a compromised invocation | is registered.

2. REGISTRO DE INVOCAÇÕES COMPROMETIDAS.2. REGISTRATION OF COMMITTED INVOCATIONS.

[00149] Uma invocação comprometida | pode entrar na cadeia de blocos como uma invocação comum. Por exemplo, a validade sintática de | pode ser suficiente para que | entre na cadeia de blocos.[00149] A compromised invocation | can enter the chain of blocks as a common summon. For example, the syntactic validity of | may be enough that | enter the block chain.

[00150] Verificar tal validade sintática pode incluir verificar se a taxa de | é adequada para o número de etapas declaradas em | para a execução especificada. De fato, a taxa e o número declarado de etapas podem não ser considerados efeitos líquidos da execução e especificada em | que deve ocorrer na cadeia de blocos. Consequentemente, a taxa e o número declarado de etapas podem aparecer abertamente em |.[00150] Verifying such syntactic validity may include verifying whether the rate of | is suitable for the number of steps declared in | for the specified run. In fact, the rate and declared number of steps may not be considered to be net effects of execution and specified in | that must occur in the block chain. Consequently, the rate and declared number of steps can openly appear in |.

[00151] Novamente, um bloco que inclui uma invocação comprometida sintaticamente inválida é considerado inválido, e a validade sintática de uma invocação comprometida | pode ser necessária para encaminhar | para outros usuários durante a propagação de |.[00151] Again, a block that includes a syntactically invalid committed invocation is considered invalid, and the syntactic validity of a compromised invocation | may be necessary to forward | to other users during the propagation of |.

[00152] Quando uma invocação comprometida | é registrada na cadeia de blocos, o sistema começa o processo de verificar sua correção. Agora se avançará para ilustrar esse processo.[00152] When a compromised invocation | is registered in the block chain, the system begins the process of verifying its correctness. We will now proceed to illustrate this process.

3. ATRIBUIÇÕES DE INVOCAÇÕES COMPROMETIDAS.3. ASSIGNMENTS OF COMMITTED INVOCATIONS.

[00153] Um conjunto S de uma ou mais invocações de contrato inteligente comprometidas, registrado em um ou mais blocos, é atribuído a um conjunto Vs de verificadores, depois de qualquer um dos métodos descritos para a atribuição de um conjunto de invocações comuns.[00153] A set S of one or more committed smart contract invocations, registered in one or more blocks, is assigned to a Vs set of verifiers, after any of the methods described for assigning a set of common invocations.

4. VERIFICAÇÃO DE INVOCAÇÕES COMPROMETIDAS.4. VERIFICATION OF COMMITTED INVOCATIONS.

[00154] Quando o conjunto S de invocações comprometidas é registrado na cadeia de blocos, cada verificador v em Vs executa o contrato C de cada invocação | em S na entrada (ou entradas) e estado apropriados e, então, autentica e propaga suas respostas. Conforme já mencionado, tais respostas podem incluir apenas um comprometimento personalizado com alguns dos efeitos líquidos da execução e especificada em |. Agora se discutirá alguns exemplos possíveis de tais respostas.[00154] When the set S of committed invocations is registered in the block chain, each verifier v in Vs executes contract C of each invocation | S in the appropriate entry (or entries) and state, and then authenticate and propagate your responses. As already mentioned, such responses may include only a personalized commitment to some of the net effects of execution and specified in | Now some possible examples of such responses will be discussed.

[00155] Se | for flagrantemente inválida (por exemplo, se o número de etapas de sua invocação e excede aquele declarado em |), então, v indica que esse é o caso em sua resposta sobre S. Por exemplo, incluindo- se em sua resposta o par (|, inválida).[00155] If | is flagrantly invalid (for example, if the number of steps in your invocation and exceeds that stated in |), then v indicates that this is the case in your answer about S. For example, including in your answer the pair ( |, invalid).

[00156] Em um segundo exemplo, deixar e ser a execução chamada por (especificada em) |, deixar | declarar o número correto de etapas para e, deixar ne consistir em todos os efeitos líquidos de e, apresentados de uma maneira e ordem predeterminadas, e deixar | esconder ne incluindo-se o comprometimento H(ne). Então, após reconstruir e (e, assim, ne), v pode autenticar informações que identificam | e um comprometimento, preferencialmente personalizado, com ne. Através de um comprometimento “personalizado de v com ne, deve-se entender comprometimento hy com ne de modo que (a) seja difícil para v computar hy sem saber ne— mesmo que v saiba o comprometimento H(ne) incluído em | e também possa saber outros comprometimentos com ne— e (b) seja fácil para qualquer um, dado o conhecimento dene e v, computar comprometimento personalizado de v com ne.[00156] In a second example, leave and be the execution called by (specified in) |, leave | declare the correct number of steps for e, let ne consist of all the net effects of e, presented in a predetermined manner and order, and let | hide ne including H (ne) impairment. Then, after rebuilding e (and thus ne), v can authenticate information that identifies | and a commitment, preferably personalized, with ne. Through a “personalized commitment of v with ne, one must understand commitment hy with ne so that (a) it is difficult to compute hy without knowing ne— even though v knows the commitment H (ne) included in | and may also know other commitments to ne— and (b) be easy for anyone, given the knowledge of dene and v, to compute v's personalized commitment to ne.

[00157] Por exemplo, um comprometimento personalizado de v com ne pode consistir em Hy(ne), em que H, é a função hash assim definida: Hy(x) = H(v, x). Assim, h = Hy(ne) = H(v, ne) é, de fato, um comprometimento de v com ne. De fato, ninguém pode encontrar outro valor ne', de modo que H(v, ne') = h, e uma vez que o valor ne é revelado, ninguém pode verificar que, de fato, h = H(v, ne). Além disso, esse comprometimento de v é personalizado, uma vez que v não pode computar facilmente o mesmo a partir do comprometimento H(ne) fornecido em |, nem a partir de H(z, ne) se z*tv.[00157] For example, a personalized commitment from v to ne can consist of Hy (ne), where H, is the hash function thus defined: Hy (x) = H (v, x). Thus, h = Hy (ne) = H (v, ne) is, in fact, a commitment of v to ne. In fact, no one can find another value ne ', so that H (v, ne') = h, and once the value ne is revealed, no one can verify that, in fact, h = H (v, ne) . Furthermore, this compromise of v is customized, since v cannot easily compute it from the compromise H (ne) provided in |, nor from H (z, ne) if z * tv.

[00158] Nota-se que misturar v juntamente com ne é apenas um exemplo de um comprometimento personalizado de v com ne, e nenhum limite é desejado. Por exemplo, substituir v em H(v, ne) por quaisquer dados depende preferencialmente apenas de v, também funcionaria. Qualquer forma de comprometimento personalizado com ne está no escopo da invenção.[00158] Note that mixing v together with ne is just one example of a personalized commitment of v with ne, and no limit is desired. For example, replacing v in H (v, ne) with any data preferably depends only on v, it would also work. Any form of personalized commitment to ne is within the scope of the invention.

[00159] (Quanto às invocações comuns, se o conjunto Vs for selecionado através de sorteio secreto, então, v, adicionalmente a suas respostas, também propaga uma prova de que, de fato, pertence a Vs-. Novamente, v pode autenticar sua resposta sobre cada invocação comprometida | em S separadamente, ou juntos, assim como no caso de invocações comuns.*)[00159] (As for common invocations, if the set Vs is selected through a secret draw, then v, in addition to your answers, also propagates proof that, in fact, it belongs to Vs-. Again, v can authenticate your answer on each committed summation | in S separately, or together, as well as in the case of common summons. *)

[00160] Usar um comprometimento personalizado com os efeitos líquidos ne da execução e de uma invocação comprometida | torna difícil para um verificador v em Vs autenticar que | é válida — mesmo que v tivesse certeza de que a invocação | estava apropriadamente preparada!— sem aprender o que o valor ne é— por exemplo, executando-se verdadeiramente a execução e chamada por |. Ao mesmo tempo, ao aprender ne, qualquer um pode verificar se o valor ne, cujo comprometimento está incluído em |, e o valor cujo comprometimento personalizado por v está incluído na resposta de v sobre |, são iguais.[00160] Use a personalized commitment to the net effects of execution and a compromised invocation | makes it difficult for a v checker in Vs to authenticate that | is valid - even if v was sure that the invocation | was properly prepared! - without learning what the value ne is - for example, by actually executing the execution and called by |. At the same time, by learning ne, anyone can verify that the value ne, whose commitment is included in |, and the value whose personalized commitment by v is included in the response of v over |, are equal.

[00161] Correção de Invocações Comprometidas. Um verificador honesto em Vs fornece apenas a resposta correta e, assim, uma única resposta, sobre cada invocação comprometida | em S. Tal invocação | é considerada (a ser provada) correta se os efeitos líquidos escondidos comprometidos em | forem os iguais ao efeitos líquidos comprometidos nas respostas de pelo menos um dado número X dos verificadores em Vs. Invocação | pode ser considerada incorreta se pelo menos Y respostas de verificadores em Vs indicam que | é inválida. Alternativamente, | pode ser Por exemplo, se as invocações em S são |1, |2, 13, la,m.., e as invocações |1, l3,... são válidas (e têm, respectivamente, os efeitos líquidos ne:; nes...) e as invocações |, la... são flagrantemente inválidas, então, v pode computar e propagar SIG, ( (li, Hy (nei)), (l2, inválida), (la, Hy (nes)), (la, inválida),...). Novamente, mais compactamente, se 1, l2, la, la... são as invocações de S em uma dada ordem, então, v pode autenticar e propagar a sequência (Hv (ne1)), O, Hv (nes), O0,...), em que O indica que a invocação correspondente é flagrantemente inválida. Verificador v também pode autenticar suas respostas em conjunto, porém, de modo a permitir que se extraia a resposta autenticada de v sobre uma invocação individual em S. Por exemplo, v pode construir uma árvore de Merkle, cada folha da mesma armazena a resposta de v sobre uma invocação separadaem S e, então, pode autenticar o valor armazenado na raiz da árvore de Merkle.[00161] Correction of Committed Invocations. An honest Vs checker provides only the correct answer, and thus a single answer, for each compromised invocation | in S. Such an invocation | is considered (to be proven) correct if the hidden net effects compromised in | are equal to the net effects compromised in the responses of at least a given number X of the verifiers in Vs. Invocation | can be considered incorrect if at least Y verifier responses in Vs indicate that | is invalid. Alternatively, | can be For example, if the invocations in S are | 1, | 2, 13, la, m .., and the invocations | 1, l3, ... are valid (and have, respectively, the net effects ne :; nes ...) and invocations |, la ... are flagrantly invalid, so v can compute and propagate GIS, ((li, Hy (nei)), (l2, invalid), (la, Hy (nes) ), (la, invalid), ...). Again, more compactly, if 1, l2, la, la ... are the invocations of S in a given order, then v can authenticate and propagate the sequence (Hv (ne1)), O, Hv (nes), O0 , ...), where O indicates that the corresponding invocation is flagrantly invalid. Verifier v can also authenticate its responses together, however, in order to allow the authenticated response of v to be extracted from an individual invocation in S. For example, v can construct a Merkle tree, each leaf of the same stores the response of v on a separate invocation in S and then can authenticate the value stored at the root of the Merkle tree.

considerada incorreta se, em um dado ponto na cadeia de blocos, a mesma não ter se provado correta ainda.considered incorrect if, at a given point in the block chain, it has not proven to be correct yet.

[00162] Nota-se, no entanto, que sem conhecer ne é difícil determinar se H(ne) = H, (ne). Assim, o sistema necessita de alguma maneira para determinar quais invocações comprometidas são corretas. Diversas dessas tais maneiras são descritas a seguir.[00162] Note, however, that without knowing ne it is difficult to determine whether H (ne) = H, (ne). Thus, the system needs some way to determine which compromised invocations are correct. Several of these ways are described below.

4.5 REVELAÇÃO DE EFEITOS LÍQUIDOS ESCONDIDOS.4.5 REVEALING HIDDEN NET EFFECTS.

[00163] Deixari ser a parte apropriada que invocou | e deixar ne ser os efeitos líquidos da execução e especificada por |, cujo comprometimento aparece em |. Deixar, sem perda de generalidade desejada, a maneira de comprometer ne em | consistir em um valor hash de ne. Ao assumir que | é honesto, então, presumivelmente, i (1) sabe o valor ne; (2) computou e incluiu apropriadamente em | o comprometimento H(ne); e (3) é desejável que os efeitos líquidos ne ocorram realmente na cadeia de blocos.[00163] Let the appropriate party you invoked | and let ne be the net effects of the execution and specified by |, whose commitment appears in |. Leave, without loss of desired generality, the way to compromise ne in | consist of a hash value of ne. When assuming that | it is honest, so presumably i (1) knows the value ne; (2) computed and appropriately included in | the H (ne) impairment; and (3) it is desirable that the net effects do not actually occur in the block chain.

[00164] Consequentemente, quando i observa que mais de X verificadores v em Vs incluem um comprometimento personalizado com ne— por exemplo, H,Y(ne)— em suas respostas, i propaga ne, preferencialmente de uma maneira autenticada e com informações que identificam a invocação l.[00164] Consequently, when i observes that more than X verifiers v in Vs include a personalized commitment to ne - for example, H, Y (ne) - in their responses, i propagates ne, preferably in an authenticated manner and with information that identify invocation l.

[00165] Uma vez que ne é revelado, qualquer um que observa as mensagens de cadeia de blocos, percebe que o valor ne é o mesmo valor comprometido em | e nos comprometimentos personalizados das respostas de pelo menos X dos verificadores em Vs. Em outras palavras, todo observador vê que a invocação comprometida | está correta.[00165] Once ne is revealed, anyone who looks at the block chain messages realizes that the value ne is the same value committed to | and in the personalized commitments of the responses of at least X of the verifiers in Vs. In other words, every observer sees that the compromised invocation | it's correct.

[00166] Nota-se que não é necessário que o invocador i revele ne. Por exemplo, pode ser qualquer entidade (por exemplo, um verificador especial atribuído a um conjunto S de invocações comprometidos ao qual | pertence) que executou e, computou ne e percebeu que, de fato, ne é o mesmo comprometido em | e nos comprometimentos personalizados das respostas de pelo menos X dos verificadores em Vs.[00166] Note that it is not necessary that the summoner i reveal ne. For example, it can be any entity (for example, a special verifier assigned to a committed S set of invocations to which | it belongs) that performed and, computed ne and realized that, in fact, ne is the same committed to | and personalized commitments for responses from at least X of the verifiers in Vs.

[00167] Agora é o momento de tornar oficial essa realização na cadeia de blocos.[00167] Now is the time to make this achievement in the block chain official.

5, VERDITOS SOBRE INVOCAÇÕES COMPROMETIDAS.5, VERDICTS ON COMMITTED INVOCATIONS.

[00168] Deixar|ser uma invocação comprometida já registrada na cadeia de blocos, porém, não ter um veredito final. Então, um construtor u de um novo bloco B, que percebe que | está correto, o mesmo inclui em informações de B que indicam que | está correto, assim, se fornece um veredito final sobre |.[00168] Let | be a compromised invocation already registered in the block chain, however, not having a final verdict. Then, a constructor u of a new block B, who realizes that | is correct, it includes in information from B that indicate that | is correct, thus, a final verdict on | is provided.

[00169] O sistema também pode fornecer o veredito final simultâneo de todas as invocações comprometidas sobre um conjunto de invocações comprometidas S já registradas na cadeia de blocos, para as quais nenhum veredito final existe ainda.[00169] The system can also provide the simultaneous final verdict of all committed invocations on a set of committed invocations S already registered in the block chain, for which no final verdict exists yet.

[00170] Por exemplo, um usuário u que constrói um novo bloco B, que aprendeu quais invocações em S estão corretas, pode incluir em B um veredito final sobre tais invocações em S. Tal veredito final também pode incluir informações que identificam o próprio conjunto S, e é preferencialmente autenticado. Se u autentica B, então, tal veredito é automaticamente —* autenticado por u Alternativamente u pode separadamente autenticar o veredito final sobre invocações em S.[00170] For example, a user u who builds a new block B, who has learned which invocations in S are correct, may include in B a final verdict on such invocations in S. Such a final verdict may also include information that identifies the set itself S, and is preferably authenticated. If u authenticates B, then this verdict is automatically - * authenticated by u Alternatively u can separately authenticate the final verdict on invocations in S.

[00171] Alternativamente, u pode incluir no bloco as respostas autenticadas de verificadores suficientes de Vs, de modo a permitir que se determine, a partir de tais respostas incluídas, invocações em S que são válidas e invocações de S que não são. Ao fazer isso, é possível usar qualquer um dos métodos abordados no caso de invocações comuns.[00171] Alternatively, u can include in the block the authenticated responses from sufficient verifiers of Vs, in order to allow to determine, from such included responses, invocations in S that are valid and invocations in S that are not. In doing so, you can use any of the methods covered in the case of common invocations.

[00172] Discussão e Detalhes Adicionais. Um bloco B pode ser considerado válido não apenas se suas transações comuns foram válidas, mas, também se seus vereditos finais sobre invocações anteriormente registradas (comuns ou comprometidas) refletem apropriadamente a correção de tais invocações.[00172] Discussion and Additional Details. A block B can be considered valid not only if its common transactions were valid, but also if its final verdicts on previously registered invocations (common or committed) appropriately reflect the correction of such invocations.

[00173] Outra discussão e detalhes adicionais descritos para invocações comuns também se aplicam às invocações comprometidas. Isso também se mantém para várias variantes e adições apresentadas para invocações comuns.[00173] Another discussion and additional details described for common invocations also apply to committed invocations. This is also true for several variants and additions presented for common invocations.

[00174] Em particular, porém, sem limitação desejada, a ponderação para técnicas de dinheiro também se aplica aos verificadores de invocações comprometidas. Consequentemente, se pode tratar um verificador com peso n como n verificadores separados.[00174] In particular, however, without desired limitation, the weighting for money techniques also applies to the verifiers of committed invocations. Consequently, a tester with weight n can be treated as n separate testers.

[00175] Verificadores cuja resposta sobre uma invocação comprometida | está de acordo com a correção estabelecida de | e/ou com o valor revelado estabelecido dos efeitos líquidos comprometidos em | podem ser recompensados— por exemplo, através de qualquer um dos métodos de incentivo já descritos, os verificadores de invocações comuns ou aqueles Novos.[00175] Verifiers whose response to a compromised invocation | complies with the established correction of | and / or with the established revealed value of the net effects committed in | they can be rewarded — for example, through any of the incentive methods already described, the common summoners or New ones.

[00176] De maneira similar, verificadores cuja resposta sobre uma invocação comprometida | não está de acordo com a correção estabelecida de | e/ou com o valor revelado estabelecido dos efeitos líquidos comprometidos em | podem ser multados ou punidos— por exemplo, através de qualquer um dos métodos de incentivo já descritos, os verificadores comuns. Em particular, podem se tornar inelegíveis por serem atribuídos para verificar pelo menos algumas outras invocações.[00176] Similarly, verifiers whose response to a compromised invocation | does not agree with the established correction of | and / or with the established revealed value of the net effects committed in | they can be fined or punished - for example, through any of the incentive methods already described, the common verifiers. In particular, they may become ineligible because they are assigned to verify at least some other invocations.

[00177] Oinvocador de uma invocação comprometida incorreta | também pode receber multas especiais ou serem punidos de alguma maneira.[00177] The caller of an incorrect compromised invocation | you can also receive special fines or be punished in some way.

4 VARIANTES E ADIÇÕES.4 VARIANTS AND ADDITIONS.

[00178] Deixar s ser um conjunto de efeitos líquidos da execução e especificada por uma invocação comprometida | de um contrato inteligente C, e deixar h = H(s) ser o comprometimento com s incluído em |. Então, alguma parte — por exemplo, um verificador atribuído a |, tal como um verificador atribuído a um conjunto de invocações que inclui |— teria dificuldade em computar s a partir de H(s), caso s fosse, ele mesmo, suficientemente imprevisível. No entanto, se s consistisse em— diga-se— apenas alguns bits, então seria possível para alguma parte tentar todas as possibilidades para s até que se encontre um valor que misturou rendimentos h. Para evitar essa possibilidade, poderia-se escolher s como muito grande— por exemplo, para consistir em todos os efeitos líquidos de e, de modo a tornar mais difícil para uma parte adivinhar todos em sua totalidade. Porém, mesmo isso poderia, por vezes, não ser suficiente.[00178] Let s be a set of net effects of execution and specified by a compromised invocation | of a smart contract C, and let h = H (s) be the commitment to s included in |. Then, some part - for example, a verifier assigned to |, such as a verifier assigned to a set of invocations that includes | - would have difficulty computing s from H (s), if s were itself unpredictable enough. However, if s consisted of - say - just a few bits, then it would be possible for some party to try all possibilities for s until a value is found that mixed yields h. To avoid this possibility, one could choose s as very large - for example, to consist of all the net effects of e, in order to make it more difficult for one party to guess everyone in its entirety. However, even that could sometimes not be enough.

[00179] Para garantir que os efeitos líquidos comprometidos de e são difíceis de adivinhar corretamente, é possível incluir artificialmente nesses efeitos líquidos uma quantidade especialmente escolhida que seja difícil de prever. Por exemplo, embora os efeitos líquidos de e de que se importa fossem o novo estado y' e algum ajuste de quantidade de jogador, A1,..., dk, UM invocador apropriado de | poderia adicionar artificialmente a tais efeitos líquidos o conteúdo, x, de uma variável auxiliar especial de C no fim da execução e, e deixar s = (Y', d1 ;..., ak, x). De fato, mesmo que os efeitos líquidos de e possam sempre ser fáceis de prever, a computação de e pode ter, ou pode ser modificada para ter, conteúdos variáveis bastante imprevisíveis, de modo a gerar seus efeitos simples. Assim, se x for difícil de prever, s = (Y', d1:..., Ok, x) seria difícil de prever a partir de H(s), mesmo se Y, d1;...., Ok for fácil de prever. (Naturalmente, x teria um papel puramente auxiliar e não deve ser tratado como um efeito líquido que ocorre na cadeia de blocos se a invocação | estiver correta.)[00179] To ensure that the compromised net effects of and are difficult to guess correctly, it is possible to artificially include in these liquid effects a specially chosen quantity that is difficult to predict. For example, although the net effects of and that you care about were the new state y 'and some adjustment of player quantity, A1, ..., dk, ONE appropriate summoner of | it could artificially add to these liquid effects the content, x, of a special auxiliary variable of C at the end of the execution e, and leave s = (Y ', d1; ..., ak, x). In fact, even though the net effects of e may always be easy to predict, the computation of e can have, or can be modified to have, quite unpredictable variable content in order to generate its simple effects. Thus, if x is difficult to predict, s = (Y ', d1: ..., Ok, x) it would be difficult to predict from H (s), even if Y, d1; ...., Ok is easy to predict. (Naturally, x would have a purely auxiliary role and should not be treated as a liquid effect that occurs in the block chain if the invocation | is correct.)

[00180] Alternativamente, o valor x poderia depender de e e da execução de um programa especificado possivelmente separado totalmente P, em uma entrada especificada totalmente separada y contida em, ou deduzível a partir de, |. Tal programa P e entrada y podem ser escolhidos de modo a tornar x difícil de prever a partir de P e y. Por exemplo, a computação de P pode incluir de tempos em tempos quantidades obtidas a partir da execução e. Alternativamente, a computação de P(y) pode ser totalmente independente de e.[00180] Alternatively, the value x could depend on e and the execution of a specified program possibly separated entirely P, in a specified entry totally separated y contained in, or deductible from, |. Such a program P and input y can be chosen so as to make x difficult to predict from P and y. For example, the computation of P may include from time to time quantities obtained from execution e. Alternatively, the computation of P (y) can be completely independent of e.

[00181] Novamente, | pode conter um comprometimento com x, e um verificador v, atribuído (direta ou indiretamente) para verificar a execução e de |, também pode ser solicitado a computar x e incluir um comprometimento personalizado com x nessa resposta. Apenas se os valores subjacentes desses comprometimentos personalizados de verificadores suficientes atribuídos a | coincidirem entre si, e com o valor subjacente x comprometido em |, | pode ser considerada correta. Assim, um verificador atribuído a | é encorajado a computar apropriadamente x se desejar que sua resposta sobre | seja apropriadamente contada.[00181] Again, | can contain a commitment to x, and a verifier v, assigned (directly or indirectly) to verify the execution and of |, can also be asked to compute x and include a custom commitment to x in that response. Only if the underlying values of these custom verifier commitments are sufficiently assigned to | coincide with each other, and with the underlying value x committed to |, | can be considered correct. Thus, a verifier assigned to | is encouraged to properly compute x if you want your answer on | be properly counted.

[00182] Nota-se que em qualquer uma das variantes descritas acima e outras possíveis variantes que aqueles versados na técnica podem usar, o número total de etapas declaradas em | teria que incluir também o número de etapas necessárias para computar x e, assim, pode fazer com que a taxa pagável de | aumente. Porém, um invocador apropriado de | pode ficar feliz em pagar uma taxa mais alta, de modo que está mais confiante de que um verificador de | computa apropriadamente x.[00182] Note that in any of the variants described above and other possible variants that those skilled in the art can use, the total number of steps declared in | it would also have to include the number of steps needed to compute x and thus can make the payable rate of | increase. However, an appropriate summoner of | can be happy to pay a higher fee, so you are more confident that a | appropriately computes x.

[00183] Além disso, não importa de que maneira tal valor x é usado, pode ser até mesmo possível para | incluir os efeitos líquidos reais de e— por exemplo, aqueles que devem, de fato, ocorrer na cadeia de blocos, se | estiver correta — de uma maneira aberta, e ter um comprometimento personalizado com x para ser o único comprometimento com |. Nesse caso, um verificador v, atribuído a um conjunto S que contém |, é solicitado a produzir uma resposta (1) que indica se os efeitos líquidos abertamente declarados de e estão corretos e (2) que inclui um comprometimento personalizado com x. Nesse caso, a invocação | é considerada correta se o valor de x comprometido em | coincide com o valor comprometido nas respostas de verificadores suficientes v atribuídos a S, e tais respostas indicam que os efeitos líquidos abertamente declarados de | estão corretos.[00183] Furthermore, no matter how this x value is used, it may even be possible for | include the actual net effects of e— for example, those that should, in fact, occur in the block chain, if | is correct - in an open manner, and have a personalized commitment to x to be the only commitment to |. In this case, a verifier v, assigned to a set S that contains |, is asked to produce a response (1) that indicates whether the openly stated net effects of and are correct and (2) that includes a custom commitment to x. In that case, the invocation | is considered correct if the value of x committed to | coincides with the value committed in the responses of sufficient verifiers v assigned to S, and such responses indicate that the openly declared net effects of | are correct.

[00184] Nota-se que o mecanismo descrito no presente documento é aplicável em outros sistemas de cadeia de blocos em que é desejável escolher aleatoriamente um subconjunto de usuários para um propósito particular, tal como verificação, de uma maneira que é geralmente verificável. Assim, o sistema descrito no presente documento pode ser adaptado a quaisquer outros esquemas de cadeia de blocos, tal como Ethereum ou Litecoin ou mesmo esquemas de cadeia de blocos que não se relacionam diretamente com dinheiro.[00184] Note that the mechanism described in this document is applicable in other block chain systems in which it is desirable to randomly choose a subset of users for a particular purpose, such as verification, in a way that is generally verifiable. Thus, the system described in this document can be adapted to any other block chain schemes, such as Ethereum or Litecoin or even block chain schemes that are not directly related to money.

[00185] O sistema descrito no presente documento pode ser adaptado para ser aplicado em e combinado com mecanismos apresentados em todos ou quaisquer um dos seguinte Pedidos de Patente nº U.S. e POT: 62/117.138 depositado em 17 de fevereiro de 2015, 62/120.916 depositado em 26 de fevereiro de 2015, 62/142.318 depositado em 2 de abril de 2015, 62/218.817 depositado em 15 de setembro de 2015, 62/314.601 depositado em 29 de março de 2016, PCT/US2016/018300 depositado em 17 de fevereiro de 2016, 62/326.865 depositado em 25 de abril de 2016, 62/331.654 depositado em 4 de maio de 2016, 62/333.340 depositado em 9 de maio de 2016, 62/343.369 depositado em 31 de maio de 2016,62/344.667 depositado em 2 de junho de 2016, 62/346.775 depositado em 7 de junho de 2016, 62/351.011 depositado em 16 de junho de 2016, 62/353.482 depositado em 22 de junho de 2016, 62/354.195 depositado em 24 de junho de 2016, 62/363.970 depositado em 19 de julho de 2016, 62/369.447 depositado em 1 de agosto de 2016,62/378.753 depositado em 24 de agosto de 2016, 62/383.299 depositado em 2 de setembro de 2016, 62/394.091 depositado em 13 de setembro de 2016, 62/400.361 depositado em 27 de setembro de 2016, 62/403.403 depositado em 3 de outubro de 2016, 62/410.721 depositado em 20 de outubro de 2016, 62/416.959 depositado em 3 de novembro de 2016, 62/422.883 depositado em 16 de novembro de 2016, 62/455.444 depositado em 6 de fevereiro de 2017, 62/458.746 depositado em 14 de fevereiro de 2017, 62/459.652 depositado em 16 de fevereiro de 2017, 62/471.562 depositado em 15 de março de 2017, 62/507.074 depositado em 16 de maio de 2017, 62/510.905 depositado em de maio de 2017, 62/522.927 depositado em 21 de junho de 2017, 62/536.061 depositado em 24 de julho de 2017, 62/541.568 depositado em 4 de agosto de 2017, 62/548.201 depositado em 21 de agosto de 2017, PCT/US2017/031037, depositado em 4 de maio de 2017, 15/551.678 depositado em 17 de agosto de 2017, 62/564.670 depositado em 28 de setembro de 2017, 62/567.864 depositado em 4 de outubro de 2017, 62/570.256 depositado em 10 de outubro de 2017, 62/580.757 depositado em 2 de novembro de 2017, 62/607.558 depositado em 19 de dezembro de 2017, 62/632.944 depositado em 20 de fevereiro de 2018 e 62/643.331 depositado em 15 de março de 2018, em que todos estão incorporados a título de referência no presente documento.[00185] The system described in this document can be adapted to be applied in and combined with mechanisms presented in all or any of the following US Patent Applications and POT: 62 / 117,138 filed on February 17, 2015, 62 / 120,916 filed on February 26, 2015, 62 / 142,318 filed on April 2, 2015, 62 / 218,817 filed on September 15, 2015, 62 / 314,601 filed on March 29, 2016, PCT / US2016 / 018300 filed on 17 February 2016, 62 / 326,865 deposited on April 25, 2016, 62 / 331,654 deposited on May 4, 2016, 62 / 333,340 deposited on May 9, 2016, 62 / 343,369 deposited on May 31, 2016,62 / 344,667 deposited on June 2, 2016, 62 / 346,775 deposited on June 7, 2016, 62 / 351,011 deposited on June 16, 2016, 62 / 353,482 deposited on June 22, 2016, 62 / 354,195 deposited on June 24 of 2016, 62 / 363,970 deposited on July 19, 2016, 62 / 369,447 deposited on August 1, 2016,62 / 378 .753 deposited on August 24, 2016, 62 / 383,299 deposited on September 2, 2016, 62 / 394,091 deposited on September 13, 2016, 62 / 400,361 deposited on September 27, 2016, 62 / 403,403 deposited on 3 October 2016, 62 / 410,721 deposited on October 20, 2016, 62 / 416,959 deposited on November 3, 2016, 62 / 422,883 deposited on November 16, 2016, 62 / 455,444 deposited on February 6, 2017, 62 / 458,746 deposited on February 14, 2017, 62 / 459,652 deposited on February 16, 2017, 62 / 471,562 deposited on March 15, 2017, 62 / 507,074 deposited on May 16, 2017, 62 / 510,905 deposited on May 2017, 62 / 522,927 deposited on June 21, 2017, 62 / 536,061 deposited on July 24, 2017, 62 / 541,568 deposited on August 4, 2017, 62 / 548,201 deposited on August 21, 2017, PCT / US2017 / 031037, deposited on May 4, 2017, 15 / 551,678 deposited on August 17, 2017, 62 / 564,670 deposited on September 28, 2017, 62/567 .864 deposited on October 4, 2017, 62 / 570,256 deposited on October 10, 2017, 62 / 580,757 deposited on November 2, 2017, 62 / 607,558 deposited on December 19, 2017, 62 / 632,944 deposited on 20 February 2018 and 62 / 643,331 filed on March 15, 2018, in which all are incorporated by reference in this document.

[00186] Implantações de software do sistema descrito no presente documento podem incluir código executável que é armazenado em uma mídia legível por computador e executado por um ou mais processadores. A mídia legível por computador pode ser não transitória e incluir um disco rígido de computador, ROM, RAM, memória flash, mídias de armazenamento em computador portátil, tals como um CD-ROM, um DVD- ROM, uma unidade flash, um cartão SD e/ou outra unidade com, por exemplo, uma interface de barramento em série universal (USB), e/ou qualquer outra mídia legível por computador tangível ou não transitória apropriada ou memória de computador na qual o código executável pode estar armazenado e executado por um processador. O sistema descrito no presente documento pode ser usado em combinação com qualquer sistema de operação apropriado.[00186] Deployments of system software described in this document may include executable code that is stored on computer-readable media and executed by one or more processors. Computer-readable media can be non-transitory and include a computer hard drive, ROM, RAM, flash memory, portable computer storage media, such as a CD-ROM, a DVD-ROM, a flash drive, an SD card and / or other unit with, for example, a universal serial bus (USB) interface, and / or any other tangible or non-transitory computer-readable media or appropriate computer memory in which the executable code can be stored and executed by a processor. The system described in this document can be used in combination with any appropriate operating system.

[00187] Outras modalidades da invenção ficarão evidentes para aqueles versados na técnica a partir de uma consideração do relatório descritivo e da prática da invenção revelada no presente documento. Pretende-se que o relatório descritivo e os exemplos sejam considerados como exemplificadores apenas, sendo que o escopo e espírito verdadeiro da invenção são indicados pelas reivindicações a seguir.[00187] Other embodiments of the invention will become apparent to those skilled in the art from a consideration of the specification and practice of the invention disclosed in this document. It is intended that the descriptive report and the examples are considered as examples only, and the scope and true spirit of the invention are indicated by the following claims.

Claims (30)

UT REIVINDICAÇÕESUT CLAIMS 1. Método para fornecer novos blocos B' e B"** em relação a uma sequência de blocos anteriores Bº, B',...., B”), em um sistema de transação em que as transações são organizadas em blocos, sendo que o método é caracterizado pelo fato de que compreende: fazer com que o bloco B' seja construído após a confirmação de que o bloco B' indica estados iniciais de transações que são consistentes com um estado das transações no bloco B"! fazer com que o bloco B"** seja construído após a confirmação de que o bloco B”** indica estados iniciais de transações que são consistentes com um estado das transações no bloco B'; e fazer com que uma pluralidade de entidades verifique transações não verificadas anteriormente do bloco B' após o bloco B”** ser construído.1. Method for providing new blocks B 'and B "** in relation to a sequence of previous blocks Bº, B', ...., B"), in a transaction system in which transactions are organized in blocks, the method being characterized by the fact that it comprises: causing block B 'to be built after confirmation that block B' indicates initial transaction states that are consistent with a state of transactions in block B "! cause block B "** to be built after confirmation that block B" ** indicates initial transaction states that are consistent with a state of transactions in block B '; and cause a plurality of entities to verify transactions not previously verified from block B 'after block B ”** is built. 2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que as transações são contratos inteligentes.2. Method, according to claim 1, characterized by the fact that transactions are smart contracts. 3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que um usuário constrói o bloco B' em conexão com o lançamento de uma transação para pelo menos um dos contratos inteligentes no bloco B”.3. Method, according to claim 2, characterized by the fact that a user builds block B 'in connection with the launch of a transaction for at least one of the smart contracts in block B ”. 4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que o usuário também lança resultados de transação para os contratos inteligentes no bloco B”.4. Method, according to claim 3, characterized by the fact that the user also posts transaction results for smart contracts in block B ”. 5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que o usuário também lança um número de etapas para execução dos resultados de contratos inteligentes para os contratos inteligentes no bloco B”.5. Method, according to claim 4, characterized by the fact that the user also launches a number of steps to execute the results of smart contracts for smart contracts in block B ”. 6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que o usuário também lança uma taxa que a pluralidade de entidades recebe para verificar transações do bloco B”.6. Method, according to claim 5, characterized by the fact that the user also launches a fee that the plurality of entities receives to verify block B transactions ”. 7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a pluralidade de entidades é um subconjunto de todos os usuários do bloco Br”.7. Method, according to claim 1, characterized by the fact that the plurality of entities is a subset of all users of the Br ”block. 8. Método, de acordo com a reivindicação 7, caracterizado pelo fato de que a pluralidade de entidades é escolhida aleatoriamente.8. Method, according to claim 7, characterized by the fact that the plurality of entities is chosen at random. 9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que a escolha da pluralidade de entidades aleatoriamente inclui aplicar uma função de hash criptográfica a dados que incluem pelo menos um dentre: informações sobre tempo, informações sobre um ou mais blocos, dados incluídos em um ou mais blocos ou dados deduzidos a partir de uma ou mais blocos.9. Method, according to claim 8, characterized by the fact that the choice of the plurality of entities at random includes applying a cryptographic hash function to data that includes at least one of: time information, information about one or more blocks, data included in one or more blocks or data deducted from one or more blocks. 10. Método para fazer com que um bloco B em uma cadeia de blocos seja adicionado à cadeia de blocos caracterizado pelo fato de que compreende: fazer com que uma entidade receba informações que correspondem a um bloco anterior; fazer com que a entidade receba uma invocação declarativa de uma execução de contrato inteligente em uma determinada entrada, em que a invocação declarativa declara resultados relevantes da execução e outros dados relevantes; fazer com que a entidade verifique a validade sintática da invocação; e fazer com que a entidade incorpore a invocação declarativa no bloco B em resposta à verificação da validade sintática da invocação.10. Method for making a B block in a block chain to be added to the block chain characterized by the fact that it comprises: making an entity receive information that corresponds to a previous block; cause the entity to receive a declarative invocation of a smart contract execution at a given entry, where the declarative invocation declares relevant performance results and other relevant data; cause the entity to verify the syntactic validity of the invocation; and having the entity incorporate the declarative invocation in block B in response to checking the syntactic validity of the invocation. 11. Método, de acordo com a reivindicação 10, caracterizado pelo fato de que os resultados relevantes especificam pelo menos um dentre: efeitos líquidos da execução de contrato inteligente, um estado resultante do contrato inteligente após execução, e um número de etapas para execução e em que os outros dados relevantes especifica pelo menos um dentre: um chamador da invocação declarativa, informações sobre tempo, informações de bloco e uma taxa pagável.11. Method according to claim 10, characterized by the fact that the relevant results specify at least one of: net effects of smart contract execution, a state resulting from the smart contract after execution, and a number of steps for execution and where the other relevant data specifies at least one among: a caller of the declarative invocation, time information, block information and a payable fee. 12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que a invocação declarativa é sintaticamente válida se a taxa for adequada para o número de etapas para execução e um pagador da taxa tem ativos suficientes para pagar a taxa, e em que a taxa é paga se a invocação declarativa aparecer na cadeia de blocos.12. Method according to claim 11, characterized by the fact that the declarative invocation is syntactically valid if the fee is adequate for the number of steps to be taken and a payer of the fee has sufficient assets to pay the fee, and in which the fee is paid if the declarative invocation appears in the block chain. 13. Método para fazer com que um conjunto de verificadores em uma cadeia de blocos a ser atribuída verifique um conjunto S de uma ou mais invocações declarativas de execuções de contrato inteligente em determinadas entradas, em que as invocações declarativas declaram resultados relevantes das execuções de contrato inteligente, sendo que o método é caracterizado pelo fato de que compreende: os verificadores que recebem o conjunto S; os verificadores que determinam quais das invocações declarativas em S são semanticamente válidas; e os verificadores que fornecem respostas autenticadas da uma ou mais invocações declarativas que são semanticamente válidas.13. Method for having a set of verifiers in a block chain to be assigned to check a set S of one or more declarative invocations of smart contract executions in certain entries, where declarative invocations declare relevant results of contract executions intelligent, and the method is characterized by the fact that it comprises: the verifiers that receive the set S; the verifiers that determine which of the declarative invocations in S are semantically valid; and verifiers that provide authenticated responses to one or more declarative invocations that are semantically valid. 14. Método, de acordo com a reivindicação 13, caracterizado pelo fato de que o conjunto de verificadores é selecionado com base em S, de uma maneira pseudoaleatória, através de uma determinada função criptográfica.14. Method, according to claim 13, characterized by the fact that the set of verifiers is selected based on S, in a pseudo-random manner, through a given cryptographic function. 15. Método, de acordo com a reivindicação 14, caracterizado pelo fato de que pelo menos um verificador determina que o pelo menos um verificador foi selecionado através de uma computação que envolve uma chave secreta do pelo menos um verificador, e em que o pelo menos um verificador pode comprovar para outros que o pelo menos um verificador foi selecionado.15. Method according to claim 14, characterized by the fact that at least one verifier determines that the at least one verifier has been selected through computation involving a secret key from at least one verifier, and in which the at least one a verifier can prove to others that at least one verifier has been selected. 16. Método, de acordo com a reivindicação 13, caracterizado pelo fato de que uma invocação | em S é considerada correta se as respostas de pelo menos um determinado número de verificadores atribuído a S indicarem que | é semanticamente correta.16. Method, according to claim 13, characterized by the fact that an invocation | in S is considered correct if the responses from at least a certain number of verifiers assigned to S indicate that | it is semantically correct. 17. Método para fazer com que um veredito das invocações de S seja incorporado na cadeia de blocos, em uma cadeia de blocos em que um conjunto S de invocações de contrato inteligente declarativo já foi registrado, um conjunto de verificadores atribuído a S, e os verificadores forneceram respostas autenticadas sobre quais invocações de S são semanticamente válidas, caracterizado pelo fato de que compreende: com uma entidade, receber as respostas autenticadas dos verificadores; com a entidade, deduzir correção das invocações de S; e com a entidade, incorporar na cadeia de blocos um veredito final sobre correção das invocações de S.17. Method for getting a verdict of S invocations to be incorporated into the block chain, in a block chain where a set of declarative smart contract invocations has already been registered, a set of verifiers assigned to S, and the verifiers provided authenticated responses about which invocations of S are semantically valid, characterized by the fact that it comprises: with an entity, receiving authenticated responses from verifiers; with the entity, deduct correction of S invocations; and with the entity, incorporate in the chain of blocks a final verdict on correcting the invocations of S. 18. Método, de acordo com a reivindicação 17, caracterizado pelo fato de que o veredito final de uma invocação | em S indica que | está correta se as respostas de pelo menos um determinado número dos verificadores atribuídos a S indicarem que | é semanticamente válida.18. Method, according to claim 17, characterized by the fact that the final verdict of an invocation | in S indicates that | is correct if the responses of at least a certain number of verifiers assigned to S indicate that | is semantically valid. 19. Método, de acordo com a reivindicação 17, caracterizado pelo fato de que, se o veredito final de uma invocação | de S indica que | está correta, fazer com que outros usuários atualizem o estado do contrato inteligente e considerem que os efeitos líquidos declarados da execução do contrato inteligente ocorreram.19. Method, according to claim 17, characterized by the fact that, if the final verdict of an invocation | of S indicates that | is correct, have other users update the status of the smart contract and consider that the stated net effects of the smart contract execution have occurred. 20. Método para fazer com que um bloco B em uma cadeia de blocos seja adicionado à cadeia de blocos caracterizado pelo fato de que compreende: fazer com que uma entidade receba informações que correspondem a um bloco anterior; causar o recebimento de uma invocação declarativa comprometida de uma execução de contrato inteligente em uma determinada entrada, em que a invocação declarativa comprometida declara pelo menos alguns resultados relevantes da execução, um compromisso com outros resultados relevantes da execução e outros dados relevantes; causar a verificação da validade sintática da invocação declarativa comprometida; e causar a incorporação da invocação declarativa comprometida no bloco B em resposta à verificação da validade sintática da invocação declarativa comprometida.20. Method for making a B block in a block chain added to the block chain characterized by the fact that it comprises: making an entity receive information that corresponds to a previous block; cause the receipt of a committed declarative invocation of a smart contract execution at a given entry, where the committed declarative invocation declares at least some relevant results of the execution, a commitment to other relevant results of the execution and other relevant data; cause verification of the syntactic validity of the compromised declarative invocation; and cause the committed declarative invocation to be incorporated into block B in response to checking the syntactic validity of the compromised declarative invocation. 21. Método, de acordo com a reivindicação 20, caracterizado pelo fato de que os resultados relevantes especificam pelo menos um dentre: efeitos líquidos da execução, um estado resultante do contrato após execução, e um número de etapas e em que os outros dados relevantes especificam pelo menos um dentre: um chamador da invocação, informações sobre tempo, informações de bloco e uma taxa pagável.21. Method, according to claim 20, characterized by the fact that the relevant results specify at least one of: net effects of execution, a state resulting from the contract after execution, and a number of steps and in which the other relevant data specify at least one of them: an invocation caller, time information, block information and a fee payable. 22. Método, de acordo com a reivindicação 21, caracterizado pelo fato de que a invocação declarativa é sintaticamente válida se a taxa for adequada para o número de etapas e o pagador da taxa tem ativos suficientes no sistema para pagar a taxa, e em que a taxa é paga se a invocação declarativa aparecer na cadeia de blocos.22. Method, according to claim 21, characterized by the fact that the declarative invocation is syntactically valid if the fee is adequate for the number of steps and the fee payer has sufficient assets in the system to pay the fee, and in which the fee is paid if the declarative invocation appears in the block chain. 23. Método para fazer com que um conjunto de verificadores em uma cadeia de blocos a ser atribuída verifique um conjunto S de invocações declarativas, incluindo pelo menos uma invocação declarativa comprometida | que especifica uma execução e de um contrato inteligente em determinadas entradas, em que | inclui um compromisso com pelo menos alguns resultados relevantes rr de e, caracterizado pelo fato de que compreende: os verificadores que recebem o conjunto S; os verificadores que reconstroem a execução e a fim de computar os resultados relevantes rr;23. Method for having a set of verifiers in a block chain to be assigned verify a set S of declarative invocations, including at least one committed declarative invocation | specifying an execution and a smart contract on certain entries, where | includes a commitment to at least some relevant results rr de e, characterized by the fact that it comprises: the verifiers that receive the set S; the verifiers that reconstruct the execution and in order to compute the relevant results rr; os verificadores que fornecem respostas autenticadas que incluem compromissos personalizados com rr dos verificadores.verifiers that provide authenticated responses that include personalized appointments with verifiers' rr. 24. Método, de acordo com a reivindicação 23, caracterizado pelo fato de que os verificadores atribuídos são selecionados com base em S, de uma maneira pseudoaleatória, através de uma determinada função criptográfica.24. Method, according to claim 23, characterized by the fact that the assigned verifiers are selected based on S, in a pseudo-random manner, through a certain cryptographic function. 25. Método, de acordo com a reivindicação 34, caracterizado pelo fato de que pelo menos um verificador pode determinar que o pelo menos um verificador foi selecionado através de uma computação que envolve uma chave secreta do pelo menos um verificador, e em que o pelo menos um verificador pode comprovar para outros que o pelo menos um verificador foi selecionado.25. Method according to claim 34, characterized by the fact that at least one verifier can determine that at least one verifier has been selected through computation involving a secret key from at least one verifier, and in which the hair at least one verifier can prove to others that at least one verifier has been selected. 26. Método, de acordo com a reivindicação 23, caracterizado pelo fato de que a invocação declarativa comprometida | em S é considerada correta apenas se as respostas de pelo menos um determinado número de verificadores atribuídos a S incluíem um compromisso personalizado com os resultados relevantes rr comprometidos em |.26. Method, according to claim 23, characterized by the fact that the compromised declarative invocation | in S is considered correct only if the responses from at least a certain number of verifiers assigned to S include a personalized commitment to the relevant results rr committed to |. 27. Método para fazer com que um veredito das invocações de S seja incorporado na cadeia de blocos, em uma cadeia de blocos em que um conjunto S de invocações de contrato inteligente declarativo já foi registrado, um conjunto de verificadores atribuídos a S, em que o conjunto S inclui pelo menos uma invocação declarativa comprometida | que especifica uma execução e de um contrato inteligente em uma determinada entrada, e em que | inclui um compromisso com pelo menos alguns resultados relevantes rr de e, e os verificadores forneceram respostas autenticadas sobre as invocações de S, caracterizado pelo fato de que compreende: fazer uma entidade receber as respostas autenticadas dos verificadores; fazer a entidade deduzir correção das invocações de S; e fazer a entidade incorporar na cadeia de blocos um veredito final sobre a correção das invocações de S.27. Method for getting a verdict of S invocations to be incorporated into the block chain, in a block chain where a set of declarative smart contract invocations has already been registered, a set of verifiers assigned to S, where the set S includes at least one committed declarative invocation | which specifies an execution and a smart contract on a given entry, and where | includes a commitment to at least some relevant results rr from e, and the verifiers have provided authenticated responses to the invocations of S, characterized by the fact that it comprises: making an entity receive the authenticated responses from the verifiers; make the entity deduct correction from the invocations of S; and make the entity incorporate in the chain of blocks a final verdict on the correction of the invocations of S. 28. Método, de acordo com a reivindicação 27, caracterizado pelo fato de que as respostas de pelo menos um determinado número dos verificadores atribuídos a S incluem um compromisso personalizado com os mesmos resultados relevantes rr comprometidos em |, e em que o veredito final da invocação declarativa comprometida | em S indica que | está correta.28. Method, according to claim 27, characterized by the fact that the responses of at least a certain number of verifiers assigned to S include a personalized commitment with the same relevant results rr committed to |, and in which the final verdict of declarative invocation committed | in S indicates that | it's correct. 29. Método, de acordo com a reivindicação 28, caracterizado pelo fato de que o veredito final da correção de | faz com que outros usuários atualizem o estado do contrato inteligente e considerem que os efeitos líquidos da execução e do contrato inteligente ocorreram.29. Method, according to claim 28, characterized by the fact that the final verdict of the correction of | causes other users to update the status of the smart contract and consider that the net effects of the execution and the smart contract have occurred. 30. Software de computador fornecido em um meio legível por computador não transitório caracterizado pelo fato de que compreende: código executável que implanta o método, de acordo com qualquer uma das reivindicações anteriores 1 a 29.30. Computer software provided in a non-transitory computer-readable medium characterized by the fact that it comprises: executable code that implements the method, according to any of the preceding claims 1 to 29. ; FIG. 1 » FIG. 2; FIG. 1 »FIG. two
BR112020006828-4A 2017-10-04 2018-10-04 declarative smart contracts BR112020006828A2 (en)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201762567864P 2017-10-04 2017-10-04
US62/567,864 2017-10-04
US201762570256P 2017-10-10 2017-10-10
US62/570,256 2017-10-10
US201862632944P 2018-02-20 2018-02-20
US62/632,944 2018-02-20
PCT/US2018/054311 WO2019070938A1 (en) 2017-10-04 2018-10-04 Declarative smart contracts

Publications (1)

Publication Number Publication Date
BR112020006828A2 true BR112020006828A2 (en) 2020-10-06

Family

ID=73024977

Family Applications (1)

Application Number Title Priority Date Filing Date
BR112020006828-4A BR112020006828A2 (en) 2017-10-04 2018-10-04 declarative smart contracts

Country Status (1)

Country Link
BR (1) BR112020006828A2 (en)

Similar Documents

Publication Publication Date Title
Teutsch et al. A scalable verification solution for blockchains
KR102609711B1 (en) Concurrent state machine processing using blockchain
CN111567009B (en) Declarative intelligent contracts
US11915238B2 (en) Blockchain-implemented systems and methods for concurrent bytecode interpretation
Allombert et al. Introduction to the tezos blockchain
KR101370020B1 (en) Systems and methods for using a domain-specific security sandbox to facilitate secure transactions
JP2024029020A (en) Blockchain for general calculations
CN114175036A (en) Providing down-link functionality using blockchain transactions
CN114175035A (en) Protocol for verifying that blockchain transactions are valid
BR112020006828A2 (en) declarative smart contracts
Rezaei et al. Developing safe smart contracts
Buterin et al. Notes on Scalable Blockchain Protocols (verson 0.3)
WO2020215195A1 (en) Blockchain smart contract realization method and apparatus, computer device and storage medium
Andersen Implementation of a tournament based distributed lottery on Ethereum
CN115809250A (en) Block chain-based consistency evaluation method and device for files stored on chain

Legal Events

Date Code Title Description
B350 Update of information on the portal [chapter 15.35 patent gazette]