Problemas con las bibliotecas (Remix)

Probé bibliotecas por primera vez, tuve una muy mala experiencia con ellas. Necesito ayuda para que mis contratos funcionen entre bibliotecas.

Biblioteca 1:

pragma solidity ^0.4.0;

library IntExtended{

    function increment(uint _self) returns (uint){
        return _self+1;
}

    function decrement(uint _self) returns(uint){
        return _self-1;
}

    function incrementByValue(uint _self,uint _value) returns (uint){
        return _self + _value;
}

    function decrementByValue(uint _self,uint _value) returns (uint){
        return _self -_value;
}

    }

Archivo que funciona con él, no sé cómo lo llamas, ¿segunda biblioteca?

pragma solidity ^0.4.0;

import "browser/Library.sol";

contract TestLibrary{
    using IntExtended for uint;

    function testIncrement(uint _base) returns (uint){
        return IntExtended.increment(_base);
}

    function testDecrement(uint _base) returns (uint){
        return IntExtended.decrement(_base);
}

    function testIncrementByValue(uint _base,uint _value) returns(uint){
        return _base.incrementByValue(_value);
} 

    function testDecrementByValue(uint _base, uint _value) returns (uint){
        return _base.decrementByValue(_value);
}
}

La biblioteca IntExtendedno está funcionando, sin embargo, el contrato que hace referencia a IntExtended está funcionando.

return IntExtended.increment(_base)debería ser return _base.increment(), ¿verdad? ¿Y qué quieres decir con tu última frase? ¿Qué funciona exactamente y qué no? (Y para las cosas que no funcionan, ¿qué significa eso exactamente? ¿Obtiene un error? ¿Un resultado incorrecto?)
Lo cambié a _base. , ninguna diferencia. Al implementar IntExtended, e intentar ejecutarlo daría como resultado... la transacción a IntExtended.decrement con error pendiente... la transacción a IntExtended.decrementByValue con error: error de VM: revertir. revert La transacción ha sido revertida al estado inicial. Nota: El constructor debe pagar si envía valor. Depure la transacción para obtener más información.
Actualice su pregunta con su código más reciente. Su comentario parece haber sido alterado y es difícil reproducir su error sin el código corregido.
Oh, parece que tal vez está tratando de implementar la biblioteca por sí misma y luego llamarla. No creo que se espere que eso funcione.
Sí, lo siento, no puedo editar los comentarios durante 5 minutos. ¿No puedes ejecutar bibliotecas? Ah bueno saberlo

Respuestas (1)

No tiene un punto definido en su almacenamiento para usar la biblioteca, también las funciones de su biblioteca pueden ser puras.

abajousing IntExtended for uint

agregar

uint myUint

y luego puede llamar a las funciones de la biblioteca como

myUint.increment()

o_base.increment()

Editar: girarlo en remix

pragma solidity ^0.4.0;

library IntExtended{

    function increment(uint _self) returns (uint){
        return _self+1;
    }
}


contract TestLibrary{
    using IntExtended for uint;

    function testIncrement(uint _base) returns (uint){
        return _base.increment();
    }
}

0x1 Transaction mined and execution succeed
 decoded input  {
    "uint256 _base": "5"
}
 decoded output     {
    "0": "uint256: 6"
}
transacción a IntExtended.decrementByValue pendiente... transacción a IntExtended.decrementByValue con error: error de VM: revertir. revert La transacción ha sido revertida al estado inicial. Nota: El constructor debe pagar si envía valor. Depure la transacción para obtener más información. {Recibí el mismo error}
Ver respuesta editada por ejemplo :)