¿Cómo se cifra y descifra la transacción? ¿Todos los pares deben tener la clave pública de todos los demás pares?

Digamos que el par A envía una transacción al contrato. ¿Cómo podrán ver esto el par B y el par C?

Respuestas (2)

Los datos de las transacciones son visibles para todos los nodos, esto es necesario para que puedan ejecutar los contratos. Por lo tanto, no se necesita encriptación para enviar una transacción.

Ver también:

Cada vez que se realiza una transacción, solo está firmada por la clave privada. Esto es necesario para verificar la autenticidad del remitente (para evitar entradas fraudulentas). ¿Es el concepto correcto? Si es así, ¿cómo ocurre el proceso de firma? ¿Puedo tener una pequeña explicación detallada al respecto?
@BudhadityaDutta, tiene razón, las transacciones se firman con la clave privada, pero solo se necesita la clave pública correspondiente para verificar la firma (consulte Firmas criptográficas asimétricas para obtener más información al respecto). Un contrato solo puede realizar transacciones siguiendo sus propias reglas codificadas. Por lo tanto, no se necesita firma para una transacción de contrato. Por ejemplo, si un contrato dice que después de recibir una dirección como parámetro de su método de regalo , otorga 1 ether a esa dirección si tiene fondos suficientes, los pares pueden verificar que el contrato tenga fondos suficientes y luego enviar el ether a la dirección. .

Tu preguntaste:

... cómo ocurre el proceso de firma. ¿Puedo tener una pequeña explicación profunda al respecto?

Si desea una explicación detallada, consulte el Apéndice F del Libro amarillo , donde se describe en detalle el proceso de firma y verificación de transacciones.

En resumen, una transacción que envía es más o menos en texto sin formato; no está encriptado. Sin embargo, va acompañado de una firma sobre los datos de la transacción. Esta firma se crea a partir de los datos de la transacción y su clave privada .

Cuando un nodo recibe su transacción, puede procesar la firma usando una técnica llamada ECDSARECOVER. El resultado de esto es su clave pública , y la dirección de su cuenta se genera directamente a partir de su clave pública (no es un secreto). Si la dirección generada a partir de la clave pública recuperada coincide con la dirección "de" en su transacción, entonces sabemos que toda la transacción se firmó con una clave privada correcta para su cuenta.

Los contratos no tienen claves privadas y, por lo tanto, no pueden enviar transacciones. En cambio, existen otros mecanismos para que los contratos se llamen entre sí o envíen valor internamente dentro de la EVM.