Documentos de Académico
Documentos de Profesional
Documentos de Cultura
8. Dado dos bloques disjuntos no pueden available: Saldo one -> Time
tener el mismo bloque previo. }
9. No puede existir un átomo Saldo que Figura 5: Inclusión de la signatura Time
pertenezca a dos cuentas.
10. No puede existir un átomo Saldo que no También se modificaron algunos de los
pertenezca a ninguna cuenta. hechos planteados originalmente para
incluir la noción de tiempo, quedando de la
Utilizando la especificación Alloy previa, siguiente manera (ver Figura 6):
podemos ejecutar el analizador y obtener
fact { no tx: Transaction, t:Time |
una instancia del modelo realizado como tx.amount > tx.sender.available.t.saldo }
podemos observar en el grafo de la Figura
4. fact { all disj b,b': BitcoinAccount, a:
Saldo, t: Time | a !in b.available.t &
b'.available.t }
Caso de test
sig Transaction {
sender : one BitcoinAccount,
recipient : one BitcoinAccount,
amount : Int
}
sig Saldo {
Figura 12: Instancia del modelo mejorado con
saldo: Int util/ordering
}
sig BitcoinAccount { Conclusión
available : Saldo one -> Time
}
En este ensayo se propuso la creación de un
modelo PIM para la tecnología blockchain
fact {all b:Block | ! next [b] = prev [b]}
donde se formalizaron una serie de
fact { all b:Block | b.prevBlock = prev
[b]} requisitos priorizando la propiedad de
fact {all disj a, b: Block, t: Transaction
integridad de los datos. Para la
| t !in (b.transactions & especificación, verificación y validación se
a.transactions)}
utilizó el lenguaje Alloy y el conjunto de
fact { all tx: Transaction | herramientas que permiten la simulación y
#tx.~transactions = 1 }
chequeo de las propiedades estáticas y
fact { all tx: Transaction | ! tx.sender =
tx.recipient } dinámicas. En una línea de investigación
fact { all t: Transaction | t.amount > 0} futura se debería extender y completar el
fact { all disj a,a' :Saldo | a & a' = none}
modelo PIM con los conceptos que no
fueron incluidos tales como el protocolo de
fact { all disj b,b' :BitcoinAccount,
a:Saldo, t : Time | a !in b.available.t & consenso, el número de mineros o las
b'.available.t }
fact { all disj b,b' :BitcoinAccount, restricciones de tiempo.
a:Saldo, t : Time | a in b.available.t +
b'.available.t }
Figura 11: Especificación Alloy incluyendo
util/ordering