Parece extremadamente costoso cuando se almacena el tipo de estructura.

En mi contrato, hay un tipo de estructura:

struct Claim{
 address healthcareProvider;
 uint amount;
 bool patientSig;
 bool paid;
 uint item;
}

Y la función de inicialización es:

 function MakeClaim(uint _amount, uint _item, uint num) {
   Claim memory c;
   c.healthcareProvider = tx.origin;
   c.patientSig = false;
   c.paid = false;
   c.amount=_amount;
   c.item=_item;
}

Cuando llamo a esta función para crear un nuevo tipo de reclamo, encuentro que el precio es 2.687 ETH (no gas). ¡Esto es mucho más que el costo de implementar todo el contrato! Lo estoy probando en la red de prueba de Morden. ¿Dónde está mi problema?

Respuestas (1)

Como el almacén de datos de blockchain es un recurso escaso, es bastante caro. El almacenamiento de datos es la operación más costosa en cualquier contrato inteligente.

sstore  100     Paid for a normal SSTORE operation (doubled or waived sometimes).

Puede ver la lista completa: https://www.cryptocompare.com/coins/guides/what-is-the-gas-in-ethereum/

Entonces, si está utilizando estructuras complejas, el costo se multiplica.

Entonces, ¿dos bools, dos entradas sin firmar y una dirección cuestan más de 30 USD cada vez que desea guardarlos o actualizarlos? ¿Estoy malinterpretando cómo funciona Ethereum?
30 USD parece ser mucho incluso para eso. Verifique el precio del gas y el uso estimado del gas en el compilador en línea de solidity ( ethereum.github.io/browser-solidity ). ¿Está ejecutando este contrato inteligente en una red en vivo o en una red de prueba privada?
¿A qué te refieres con estructuras complejas? ¿Tiene algún ejemplo para un caso de estructura simple? @KanekiDev
Una estructura compleja puede ser, por ejemplo: si desea construir una estructura de árbol en su contrato inteligente.