Bitcoin Forum
May 06, 2024, 01:35:01 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: « 1 2 3 4 [5]  All
  Print  
Author Topic: [Programmazione] Smart Contracts  (Read 20943 times)
lorecoincoin
Newbie
*
Offline Offline

Activity: 69
Merit: 0


View Profile
October 05, 2018, 07:47:39 AM
 #81

grazie
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715002501
Hero Member
*
Offline Offline

Posts: 1715002501

View Profile Personal Message (Offline)

Ignore
1715002501
Reply with quote  #2

1715002501
Report to moderator
Piggy
Hero Member
*****
Offline Offline

Activity: 784
Merit: 1416



View Profile WWW
October 28, 2018, 08:46:28 AM
Merited by picchio (1)
 #82

Segnalo questo thread in inglese dove si tratta di testamenti ed è saltato fuori qualcosa di interessante di cui non ero a conoscenza https://bitcointalk.org/index.php?topic=5052754.0

Il succo è: creando con un nuovo indirizzo ethereum un certo numero di smart contract in una rete di test e poi nella main net ethereum, questi avranno gli stessi indirizzi.

https://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed/761#761

Quote
The address for an Ethereum contract is deterministically computed from the address of its creator (sender) and how many transactions the creator has sent (nonce). The sender and nonce are RLP encoded and then hashed with Keccak-256.
picchio
Legendary
*
Offline Offline

Activity: 2506
Merit: 1120



View Profile
October 28, 2018, 10:16:03 AM
Last edit: October 28, 2018, 07:06:16 PM by picchio
 #83

Segnalo questo thread in inglese dove si tratta di testamenti ed è saltato fuori qualcosa di interessante di cui non ero a conoscenza https://bitcointalk.org/index.php?topic=5052754.0

Il succo è: creando con un nuovo indirizzo ethereum un certo numero di smart contract in una rete di test e poi nella main net ethereum, questi avranno gli stessi indirizzi.

https://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed/761#761

Quote
The address for an Ethereum contract is deterministically computed from the address of its creator (sender) and how many transactions the creator has sent (nonce). The sender and nonce are RLP encoded and then hashed with Keccak-256.
E' per queste cose che adoro il modo crypto-blockchain.
E' come quando qualcuno scopre l'acqua calda Smiley (*)
EDIT: bisogna però osservare che ethereum ha già dato segni di non immutabilità delle regole.
EDIT2: (*) e scopre un utilizzo interessante dell'acqua calda ...

Waves mi piaceva ora non più.
lorecoincoin
Newbie
*
Offline Offline

Activity: 69
Merit: 0


View Profile
October 28, 2018, 04:38:21 PM
 #84

a dirla ll' inglese OMG
Makkara (OP)
Full Member
***
Offline Offline

Activity: 1064
Merit: 166



View Profile
October 29, 2018, 07:32:59 AM
 #85

Segnalo questo thread in inglese dove si tratta di testamenti ed è saltato fuori qualcosa di interessante di cui non ero a conoscenza https://bitcointalk.org/index.php?topic=5052754.0

Il succo è: creando con un nuovo indirizzo ethereum un certo numero di smart contract in una rete di test e poi nella main net ethereum, questi avranno gli stessi indirizzi.

https://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed/761#761

Quote
The address for an Ethereum contract is deterministically computed from the address of its creator (sender) and how many transactions the creator has sent (nonce). The sender and nonce are RLP encoded and then hashed with Keccak-256.

Non la sapevo questa cosa degli indirizzi, ed è vero che potrebbe tornare utile  Cool

Per l'utilizzo che ne fà nel suo caso, forse avrebbe potuto bloccare il testamento usando il numero del blocco corrente ( 10 - 20 o 30 anni nel futuro contando un tempo di creazione per blocco di 10 minuti) e ritardando la scandenza nel caso fosse ancora in vita. Ci sono un sacco di modi magari piu semplici per fare un testamento.

Pi Network - mining app for phone: https://minepi.com/spippolino
Blockfolio trading: https://blockfolio.com/trading?r=MvFRE7EX98
picchio
Legendary
*
Offline Offline

Activity: 2506
Merit: 1120



View Profile
November 10, 2018, 11:12:29 PM
Merited by Makkara (1), Piggy (1)
 #86

Cercano un programmatore smart contract waves,
https://bitcointalk.org/index.php?topic=5066539.0
non sapevo esistessero e ho iniziato a guardare ...
Vi copio/incollo gli appunti che ho preso ...

Code:
Smart contract (waves - appunti sparsi)
    white paper <https://wavesplatform.com/files/docs/white_paper_waves_smart_contracts.pdf>
    video esempio <https://hooktube.com/watch?v=sOZuE9Ebfko>
    documentazione <https://docs.wavesplatform.com/en/technical-details/waves-contracts-language-description.html>
        Associ uno scrip ad un account
        Le transazioni sono valide se lo script approva
            Firme e altri dati
            proofs
                ?
            Numero blocchi della catena
            dati presenti nella catena, oracoli
                Inseriti con DataTransaction
            Gli script possono essere sostituiti o annullati associandone uno nuovo
                A meno che lo script precedente non lo vieti
            Default script di un account
                sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPk)
           
        Costo script
            Dipendono dalla complessità
            max 8kByte
            minimo: 0.004 WAVES
            Costi minimi (non script) <https://docs.wavesplatform.com/en/technical-details/transactions-fees.html>
        Esempi
            Vedi documentazione <https://docs.wavesplatform.com/en/technical-details/waves-contracts-language-description/approach-and-capabilities.html>
                Account scambia solo BTC
                    let cooperPubKey = base58'BVqYXrapgJP9atQccdBPAgJPwHDKkh6A8'
                    let BTCId = base58'8LQW8f7P5d5PZM7GtZEBgaqRPGSzS3DfPuiXrURJ4AJS'
                    match tx {
                        case o: Order =>
                            sigVerify(tx.bodyBytes, tx.proofs[0], cooperPubKey ) && (o.assetPair.priceAsset == BTCId || o.assetPair.amountAsset == BTCId)
                        case _ => sigVerify(tx.bodyBytes, tx.proofs[0], cooperPubKey )
                    }
                Buy back ad uno specifico prezzo in WAVES
                    let myAssetId = base58'BVqYXrapgJP9atQccdBPAgJPwHDKkh6B9'
                    let cooperPubKey = base58'BVqYXrapgJP9atQccdBPAgJPwHDKkh6A8'
                    match tx {
                        case o: Order =>
                            o.assetPair.priceAsset == base58'' && o.assetPair.amountAsset == myAssetId && o.price == 500000 && o.amount == 1000 && o.orderType == Buy
                        case _ => sigVerify(tx.bodyBytes, tx.proofs[0], cooperPubKey )
                    }
        come associare uno script ad un account
            ...
        DataTransaction
            Da capire
Sembrano interessanti, l'impressione è che, forse, sono relativamente semplici da capire e implementare.

Waves mi piaceva ora non più.
Makkara (OP)
Full Member
***
Offline Offline

Activity: 1064
Merit: 166



View Profile
November 11, 2018, 06:11:56 AM
 #87

Se hai qualche informazione base o link che spiegano qualcisa in generale e come pubblicarli e interagire. Potrebbe essere utile come alternativa.

Pi Network - mining app for phone: https://minepi.com/spippolino
Blockfolio trading: https://blockfolio.com/trading?r=MvFRE7EX98
picchio
Legendary
*
Offline Offline

Activity: 2506
Merit: 1120



View Profile
November 11, 2018, 11:21:29 AM
 #88

Se hai qualche informazione base o link che spiegano qualcisa in generale e come pubblicarli e interagire. Potrebbe essere utile come alternativa.
Se parli di waves ho riportato i link che ho trovato utili. Sono molto lento ad approfondire e alla fine mi perdo. ....

Waves mi piaceva ora non più.
Makkara (OP)
Full Member
***
Offline Offline

Activity: 1064
Merit: 166



View Profile
November 12, 2018, 05:23:33 AM
 #89

Se hai qualche informazione base o link che spiegano qualcisa in generale e come pubblicarli e interagire. Potrebbe essere utile come alternativa.
Se parli di waves ho riportato i link che ho trovato utili. Sono molto lento ad approfondire e alla fine mi perdo. ....

Penso di aver bevuto un pò troppo ieri, pensavo fosse un esempio  8. Poi riporto nel primo post i link.

È uscito cryptozombie season 2

https://medium.com/loom-network/cryptozombies-season-2-is-here-and-introducing-zombie-battleground-custom-game-modes-f1f09efa24f4

Pi Network - mining app for phone: https://minepi.com/spippolino
Blockfolio trading: https://blockfolio.com/trading?r=MvFRE7EX98
bomj
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
January 23, 2019, 07:00:59 PM
 #90

Come gestire token in uno smart contract:

Code:
function prelievoToken(address token, uint amount) public payable{
    if (token==0) throw;
    if (tokens[token][msg.sender] < amount) throw;
    tokens[token][msg.sender] = safeSub(tokens[token][msg.sender], amount);
    if (!Token(token).transfer(msg.sender, amount)) throw;
    Withdraw(token, msg.sender, amount, tokens[token][msg.sender]);
  }

Ciao, come aggiungere la seguente funzione a questo smart contract:

Code:
function withdrawToken_to(address _token, address _to, uint _amount) 


Makkara (OP)
Full Member
***
Offline Offline

Activity: 1064
Merit: 166



View Profile
January 23, 2019, 10:17:08 PM
Merited by Piggy (1)
 #91

Non l'ho provato ma dovrebbe funzionare. Basta semplicemente sostituire il proprio indirizzo in questa parte sotto

Code:
if (!Token(token).transfer(msg.sender, amount)) throw;

con l'indirizzo a cui vogiamo mandare i token:

Code:
if (!Token(token).transfer(_to, amount)) throw;

Code:
function withdrawToken_to(address token, address _to, uint amount) public payable{
    if (token==0) throw;
    if (tokens[token][msg.sender] < amount) throw;
    tokens[token][msg.sender] = safeSub(tokens[token][msg.sender], amount);
    if (!Token(token).transfer(_to, amount)) throw;
    Withdraw(token, _to, amount, tokens[token][msg.sender]);
  }


Appena ho un pò di tempo verifico se è corretto. Comunque è importante ricordarsi di aver dato l'approvazione allo smart contract di spendere i token, chiamando il metodo approve direttamente dal contratto del token.

Pi Network - mining app for phone: https://minepi.com/spippolino
Blockfolio trading: https://blockfolio.com/trading?r=MvFRE7EX98
bomj
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
January 23, 2019, 10:48:51 PM
 #92

Code:
if (!Token(token).transfer(_to, amount)) throw;
Code:
function withdrawToken_to(address token, address _to, uint amount) public payable{
    if (token==0) throw;
    if (tokens[token][msg.sender] < amount) throw;
    tokens[token][msg.sender] = safeSub(tokens[token][msg.sender], amount);
    if (!Token(token).transfer(_to, amount)) throw;
    Withdraw(token, _to, amount, tokens[token][msg.sender]);
  }

Ieri ho provato a fare qualcosa di simile.

Comunque è importante ricordarsi di aver dato l'approvazione allo smart contract di spendere i token, chiamando il metodo approve direttamente dal contratto del token.

Apparentemente me ne sono dimenticato. Domani farò dei test.
Grazie.
Mi scuso per la traduzione scadente.

bomj
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
January 24, 2019, 11:19:50 PM
 #93

Code:
function withdrawToken_to(address token, address _to, uint amount) public payable{
    if (token==0) throw;
    if (tokens[token][msg.sender] < amount) throw;
    tokens[token][msg.sender] = safeSub(tokens[token][msg.sender], amount);
    if (!Token(token).transfer(_to, amount)) throw;
    Withdraw(token, _to, amount, tokens[token][msg.sender]);
  }

Tutto è andato, grazie.

Ma non riesco a capire cosa sia e cosa fare al riguardo?
Che cosa fa questa funzione e come usarla?


Makkara (OP)
Full Member
***
Offline Offline

Activity: 1064
Merit: 166



View Profile
January 25, 2019, 01:29:10 PM
Merited by bomj (1)
 #94

Code:
function withdrawToken_to(address token, address _to, uint amount) public payable{
    if (token==0) throw;
    if (tokens[token][msg.sender] < amount) throw;
    tokens[token][msg.sender] = safeSub(tokens[token][msg.sender], amount);
    if (!Token(token).transfer(_to, amount)) throw;
    Withdraw(token, _to, amount, tokens[token][msg.sender]);
  }

Tutto è andato, grazie.

Ma non riesco a capire cosa sia e cosa fare al riguardo?
Che cosa fa questa funzione e come usarla?



quello serve per tenere conto dei token presenti nel contratto e chi è il proprietario, gli passi l'indirizzo token e indirizzo personale e ti ritorna il totale.

Code:
mapping (address => mapping (address => uint)) public tokens; //questo mappa un indirizzo di un token con un la mappatura di un indirizzo di un proprietario e la quantità di quei tokens

Pi Network - mining app for phone: https://minepi.com/spippolino
Blockfolio trading: https://blockfolio.com/trading?r=MvFRE7EX98
bomj
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
January 26, 2019, 03:35:22 PM
 #95

Da tempo desideravo aggiungere una funzione interessante a un contratto di token. Ho cercato di capire funzioni simili nei contratti ED e TS. Grazie, Google ha trovato questo argomento. Grazie a Makkara per avermi aiutato a capire queste funzioni, grazie alle quali sono riuscito a creare la funzione utile desiderata.

bomj
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
June 03, 2019, 10:40:51 PM
 #96

Ciao.
Trovato un argomento interessante:

"Vyper"

"Vyper" è un linguaggio di sviluppo smart contract.
Documentazione:
https://vyper.readthedocs.io/en/v0.1.0-beta.10/index.html
GitHub:
https://github.com/ethereum/vyper
Online compiler:
https://vyper.online
https://etherscan.io/vyper
https://rinkeby.etherscan.io/vyper
Vasto link GitHub alle risorse Vyper:
https://github.com/ethereum/vyper/wiki/Vyper-tools-and-resources

Ad esempio, su Smart Contracts vyper, lo scambio di Uniswap funziona.

Qualcuno ha studiato questa zona?

Makkara (OP)
Full Member
***
Offline Offline

Activity: 1064
Merit: 166



View Profile
June 05, 2019, 07:26:27 PM
 #97

Ciao.
Trovato un argomento interessante:

"Vyper"

"Vyper" è un linguaggio di sviluppo smart contract.
Documentazione:
https://vyper.readthedocs.io/en/v0.1.0-beta.10/index.html
GitHub:
https://github.com/ethereum/vyper
Online compiler:
https://vyper.online
https://etherscan.io/vyper
https://rinkeby.etherscan.io/vyper
Vasto link GitHub alle risorse Vyper:
https://github.com/ethereum/vyper/wiki/Vyper-tools-and-resources

Ad esempio, su Smart Contracts vyper, lo scambio di Uniswap funziona.

Qualcuno ha studiato questa zona?


Non lo conosco, è da un pò che non metto mano agli smart contract. A prima vista sembra una figata. Magari faccio qualche prova per vedere come funziona.

Pi Network - mining app for phone: https://minepi.com/spippolino
Blockfolio trading: https://blockfolio.com/trading?r=MvFRE7EX98
bomj
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
October 25, 2019, 05:23:23 PM
 #98

Ciao.
Come scrivere un semplice contratto intelligente come 'Hello World', ma in modo che possa essere creato solo da un indirizzo specifico?
Cioè, sarà impossibile distribuirlo da un altro indirizzo.
Dovrei in qualche modo scrivere l'indirizzo nel smart contract?
Grazie.

Makkara (OP)
Full Member
***
Offline Offline

Activity: 1064
Merit: 166



View Profile
October 28, 2019, 08:43:10 AM
Last edit: October 28, 2019, 08:55:36 AM by Makkara
 #99

Ciao.
Come scrivere un semplice contratto intelligente come 'Hello World', ma in modo che possa essere creato solo da un indirizzo specifico?
Cioè, sarà impossibile distribuirlo da un altro indirizzo.
Dovrei in qualche modo scrivere l'indirizzo nel smart contract?
Grazie.

Dovresti creare uno smart contract "padre" in grado di fare il deploy di smart contract "figli", non ho provato ma a quanto pare si può fare.

Code:
function newPurchase()
public
payable
returns(address newContract)
{
Purchase c = (new Purchase).value(msg.value)(address(msg.sender));
contracts.push(c);
lastContractAddress = address(c);
emit newPurchaseContract(c);
return c;
}

https://github.com/jacksonng77/StartEscrow/blob/master/Solidity/StartEscrow.sol

Il tuo SC padre sarà customizzabile e potrai decidere a quale indirizzo permettere di fare il deploy di un certo SC figlio

Qui c'è un esempio per qualcosa di simile
https://medium.com/coinmonks/creating-smart-contracts-with-smart-contract-d54e21d26e00

Pi Network - mining app for phone: https://minepi.com/spippolino
Blockfolio trading: https://blockfolio.com/trading?r=MvFRE7EX98
bomj
Sr. Member
****
Offline Offline

Activity: 1337
Merit: 288


0xbt


View Profile WWW
November 05, 2019, 08:10:15 PM
 #100

Grazie makkara, ma questa è comunque una soluzione leggermente diversa.
Voglio provare a finire:
https://bitcointalk.org/index.php?topic=5052754.0
Smart contract per il calcolo dell'indirizzo del contratto:
Code:
pragma solidity 0.4.18;
contract Balls {
    function addressFrom(address _origin, uint _nonce) public pure returns (address) {
        if(_nonce == 0x00)     return address(keccak256(byte(0xd6), byte(0x94), _origin, byte(0x80)));
        if(_nonce <= 0x7f)     return address(keccak256(byte(0xd6), byte(0x94), _origin, byte(_nonce)));
        if(_nonce <= 0xff)     return address(keccak256(byte(0xd7), byte(0x94), _origin, byte(0x81), uint8(_nonce)));
        if(_nonce <= 0xffff)   return address(keccak256(byte(0xd8), byte(0x94), _origin, byte(0x82), uint16(_nonce)));
        if(_nonce <= 0xffffff) return address(keccak256(byte(0xd9), byte(0x94), _origin, byte(0x83), uint24(_nonce)));
        return address(keccak256(byte(0xda), byte(0x94), _origin, byte(0x84), uint32(_nonce))); // more than 2^32 nonces not realistic
    }    
}
;-)))
https://rinkeby.etherscan.io/address/0x156e6451d6d1cf1a3cb3be03b229b71e58ce2774#readContract

Pages: « 1 2 3 4 [5]  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!