lorecoincoin
Newbie
Offline
Activity: 69
Merit: 0
|
|
October 05, 2018, 07:47:39 AM |
|
grazie
|
|
|
|
|
picchio
Legendary
Offline
Activity: 2506
Merit: 1120
|
|
October 28, 2018, 10:16:03 AM Last edit: October 28, 2018, 07:06:16 PM by picchio |
|
E' per queste cose che adoro il modo crypto-blockchain. E' come quando qualcuno scopre l'acqua calda (*) 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
Activity: 69
Merit: 0
|
|
October 28, 2018, 04:38:21 PM |
|
a dirla ll' inglese OMG
|
|
|
|
Makkara (OP)
|
|
October 29, 2018, 07:32:59 AM |
|
Non la sapevo questa cosa degli indirizzi, ed è vero che potrebbe tornare utile 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.
|
|
|
|
picchio
Legendary
Offline
Activity: 2506
Merit: 1120
|
|
November 10, 2018, 11:12:29 PM Merited by Makkara (1), Piggy (1) |
|
Cercano un programmatore smart contract waves, https://bitcointalk.org/index.php?topic=5066539.0non sapevo esistessero e ho iniziato a guardare ... Vi copio/incollo gli appunti che ho preso ... 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)
|
|
November 11, 2018, 06:11:56 AM |
|
Se hai qualche informazione base o link che spiegano qualcisa in generale e come pubblicarli e interagire. Potrebbe essere utile come alternativa.
|
|
|
|
picchio
Legendary
Offline
Activity: 2506
Merit: 1120
|
|
November 11, 2018, 11:21:29 AM |
|
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ù.
|
|
|
|
bomj
|
|
January 23, 2019, 07:00:59 PM |
|
Come gestire token in uno smart contract: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: function withdrawToken_to(address _token, address _to, uint _amount)
|
|
|
|
Makkara (OP)
|
|
January 23, 2019, 10:17:08 PM |
|
Non l'ho provato ma dovrebbe funzionare. Basta semplicemente sostituire il proprio indirizzo in questa parte sotto if (!Token(token).transfer(msg.sender, amount)) throw;
con l'indirizzo a cui vogiamo mandare i token: if (!Token(token).transfer(_to, amount)) throw;
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.
|
|
|
|
bomj
|
|
January 23, 2019, 10:48:51 PM |
|
if (!Token(token).transfer(_to, amount)) throw;
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
|
|
January 24, 2019, 11:19:50 PM |
|
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)
|
|
January 25, 2019, 01:29:10 PM |
|
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. 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
|
|
|
|
bomj
|
|
January 26, 2019, 03:35:22 PM |
|
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.
|
|
|
|
|
Makkara (OP)
|
|
June 05, 2019, 07:26:27 PM |
|
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.
|
|
|
|
bomj
|
|
October 25, 2019, 05:23:23 PM |
|
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)
|
|
October 28, 2019, 08:43:10 AM Last edit: October 28, 2019, 08:55:36 AM by Makkara |
|
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. 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.solIl 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
|
|
|
|
bomj
|
|
November 05, 2019, 08:10:15 PM |
|
Grazie makkara, ma questa è comunque una soluzione leggermente diversa. Voglio provare a finire: https://bitcointalk.org/index.php?topic=5052754.0Smart contract per il calcolo dell'indirizzo del contratto: 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
|
|
|
|
|