¿Por qué confirma que siempre hay 1 bloque de distancia en la red principal cuando se inician transacciones múltiples simultáneamente? por web3.py e Infura.io

1.Necesito iniciar transacciones múltiples a la misma dirección de contrato en el menor tiempo posible y obtener confirmación de la red. Significa que múltiples transacciones se registran en el mismo bloque.

2. Mediante el uso de Web3.py e Infura.io. En la prueba de red kovan se pasó. Pero en Mainnet, cada transacción iniciada al mismo tiempo se confirmó en el bloque separado por 1 bloque.

3. El límite de gas era de 1 millón, el precio del gas era el precio máximo instantáneo.

4. El nonce no es ninguna duda. Obtengo el primer nonce de transacción a través de getTransactionCount(), luego la segunda transacción la configuro yo mismo (nonce+1) para garantizar la corrección del nonce, y la prueba se pasa en la red kovan.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Respuestas (2)

Por supuesto, hay mucha más congestión de transacciones en la red principal que en las redes de prueba, los mempools de los mineros están llenos. Mientras que en las redes de prueba los bloques no siempre están llenos (== alcanzar el límite de gas), en la red principal las transacciones deben elegirse cuidadosamente para que se ajusten lo más posible al límite de gas del bloque elegido.

También podría ser que los clientes (de los mineros) estén configurados de manera que tengan más igualdad entre todos los remitentes y solo tomen una transacción por remitente por bloque (si no se dan algunas condiciones, tal vez, no es totalmente imposible tener más de una transacción por remitente por bloque, pero esta ocasión es muy, muy rara).

it's not toally impossible to have more than one transaction per sender per blockEsto sucede todo el tiempo, no diría que es raro. Casi todos los bloques tienen múltiples transacciones desde al menos una dirección
sí, descubrí que la dirección del contrato de otras personas tiene múltiples transacciones desde la misma dirección en un bloque.

Puede aumentar sus posibilidades aumentando el precio de la gasolina, pero no hay forma de garantizar que se incluirán varias transacciones en el mismo bloque. (aparte de convertirte en minero, tu mismo)

Si está tratando de competir para hacer algo entre la primera y la segunda transacción, tenga en cuenta que los mineros pueden "aventajarlo". Pueden retrasar intencionalmente su segunda transacción y ejecutar la suya propia en el medio. Si existe un incentivo económico para que lo hagan, probablemente lo harán.

Si debe tener dos llamadas de función en el mismo bloque, puede combinarlas mediante un contrato inteligente que llama a ambas funciones secuencialmente. Entonces, si la transacción 1 está llamando a contract A, function foo(), y la transacción 2 está llamando a contract B, function bar(), entonces puede tener una llamada de contrato:

contract C {
  function grouped() {
    A.foo();
    B.bar();
  }
}