Como de costumbre, concluimos la segunda semana de nuestro sprint con un nuevo release. Con esta actualización, hemos implementado una serie de características importantes para Bitcoin-NG, state channels, y Virtual Machine.
Bitcoin-NG
Para Bitcoin-NG hemos agregado la validación de marca de timestamps de bloque.
Antes de esta actualización, para validar los timestamps del bloque, solo comprobábamos si blocktime < now + 30min en validate_time. La desventaja de esto es que potencialmente podría permitir ataques timewarp y hacer timestamps menos significativas para bloqueos de tiempo (que pueden depender del tiempo de unix y no de altura de bloque) y smart contracts. Para resolver este problema, consideramos dos posibilidades:
- Una solución al estilo Ethereum, donde los timestamps aumentan estrictamente (es decir, la mayoría de los mineros simplemente hacen min (now, parent.timestamp + 1)) aunque el libro blanco establece el límite superior de + 900, que normalmente no se implementa;
- Una solución de estilo Bitcoin, donde el tiempo de bloque debe ser mayor que la mediana de las últimas N transacciones (11 para bitcoin) pero con menos de dos horas de anticipación.
Habiendo considerado estas dos opciones, hemos decidido optar por la validación probada al estilo Bitcoin.
State Channels
State channels ahora admiten la eliminación de las llamadas de contrato en los state channels, donde corresponde al participante del canal cuándo hacerlo. También hemos agregado API de WebSocket y casos de prueba para las API de Erlang existentes para salir o restablecer un canal de estado.
Virtual Machine
Para la Virtual Machine, hemos afinado los oracles incorporados de Sophia y las primop VM relacionadas (elimina el argumento de tarifa de Oracle.registre Sophia incorporado, elimina el argumento de cuota de Oracle.extend Sophia incorporado, elimina el argumento de cuota de oracle extend VM primop). Lo que es más, hemos introducido un límite en el operando de gas del código de operación CALL con el gas de la máquina disponible antes de realizar la llamada interna.
Además de lo anterior, se agregaron las siguientes correcciones de errores y actualizaciones más pequeñas:
- Corregido el error del compilador de Sophia con funciones de mapa integradas.
- Se eliminó el soporte para oracles en WS API. Esta funcionalidad se moverá al middleware.
- Se agregó la interfaz http API /tx/contract/create/compute para crear contratos.
- Se corrigió un error en el almacenamiento interno de BD de micro forks.
- Se corrigió un error en el algoritmo de sincronización, donde la sincronización podía atascarse en un microbloque faltante.
Como recordatorio, el mejor lugar para seguir el progreso del desarrollo hacia el lanzamiento de la Mainnet (aparte de GitHub) es Pivotal Tracker.
¿Interesado en æternity? Síguenos:
GitHub | Forum | Reddit | Telegram | Twitter | Facebook | Mail
No Comments.