`
lxiaodao
  • 浏览: 119803 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

以太坊智能合约构造函数初始化解密

阅读更多
1.编译智能合约源代码得到code
2.部署智能合约
   参考rpc命令,web3有完善的接口
   curl -X POST --data '{"jsonrpc":"2.0","method":"eth_sendTransaction","params":[{"from":"0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826","data":"........."}],"id":1}' http://192.168.10.18:7000/rpc
3.构建data举例,智能合约
pragma solidity ^0.4.24;
contract RI {
    // The keyword "public" makes those variables
    // readable from outside.
    address public minter;
    mapping (address => uint) public balances;
    string public accounts;

    // Events allow light clients to react on
    // changes efficiently.
    event Sent(address from, address to, uint amount);

    // This is the constructor whose code is
    // run only when the contract is created.
    constructor (uint apply,string users) public {
        minter = msg.sender;
        balances[msg.sender]=apply;
        accounts=users;
    }

    function mint(address receiver, uint amount) public {
        if (msg.sender != minter) return;
        balances[receiver] += amount;
    }

    function send(address receiver, uint amount) public {
        if (balances[msg.sender] < amount) return;
        balances[msg.sender] -= amount;
        balances[receiver] += amount;
        emit Sent(msg.sender, receiver, amount);
    }
}

4.没有构造器参数的时候,部署智能合约应该发送data
0x608060405234801561001057600080fd5b50604051610460380380610460833981016040908152815160208084015160008054600160a060020a0319163390811782558152600183529390932082905591909201805190916100669160029184019061006e565b505050610109565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100af57805160ff19168380011785556100dc565b828001600101855582156100dc579182015b828111156100dc5782518255916020019190600101906100c1565b506100e89291506100ec565b5090565b61010691905b808211156100e857600081556001016100f2565b90565b610348806101186000396000f30060806040526004361061006c5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166307546172811461007157806327e235e3146100a257806340c10f19146100d557806368cd03f6146100fb578063d0679d3414610185575b600080fd5b34801561007d57600080fd5b506100866101a9565b60408051600160a060020a039092168252519081900360200190f35b3480156100ae57600080fd5b506100c3600160a060020a03600435166101b8565b60408051918252519081900360200190f35b3480156100e157600080fd5b506100f9600160a060020a03600435166024356101ca565b005b34801561010757600080fd5b50610110610204565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014a578181015183820152602001610132565b50505050905090810190601f1680156101775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019157600080fd5b506100f9600160a060020a036004351660243561028f565b600054600160a060020a031681565b60016020526000908152604090205481565b600054600160a060020a031633146101e157610200565b600160a060020a03821660009081526001602052604090208054820190555b5050565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156102875780601f1061025c57610100808354040283529160200191610287565b820191906000526020600020905b81548152906001019060200180831161026a57829003601f168201915b505050505081565b336000908152600160205260409020548111156102ab57610200565b33600081815260016020908152604080832080548690039055600160a060020a03861680845292819020805486019055805193845290830191909152818101839052517f3990db2d31862302a685e8086b5755072a6e2b5b780af1ee81ece35ee3cd33459181900360600190a150505600a165627a7a72305820383284c7be6ce7a40cd7ecfd2f334a26968e7b27dec29a70986c60e09e54e8680029000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000


5.构造器参数123,,发送的data

0x608060405234801561001057600080fd5b50604051610460380380610460833981016040908152815160208084015160008054600160a060020a0319163390811782558152600183529390932082905591909201805190916100669160029184019061006e565b505050610109565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100af57805160ff19168380011785556100dc565b828001600101855582156100dc579182015b828111156100dc5782518255916020019190600101906100c1565b506100e89291506100ec565b5090565b61010691905b808211156100e857600081556001016100f2565b90565b610348806101186000396000f30060806040526004361061006c5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166307546172811461007157806327e235e3146100a257806340c10f19146100d557806368cd03f6146100fb578063d0679d3414610185575b600080fd5b34801561007d57600080fd5b506100866101a9565b60408051600160a060020a039092168252519081900360200190f35b3480156100ae57600080fd5b506100c3600160a060020a03600435166101b8565b60408051918252519081900360200190f35b3480156100e157600080fd5b506100f9600160a060020a03600435166024356101ca565b005b34801561010757600080fd5b50610110610204565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561014a578181015183820152602001610132565b50505050905090810190601f1680156101775780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561019157600080fd5b506100f9600160a060020a036004351660243561028f565b600054600160a060020a031681565b60016020526000908152604090205481565b600054600160a060020a031633146101e157610200565b600160a060020a03821660009081526001602052604090208054820190555b5050565b6002805460408051602060018416156101000260001901909316849004601f810184900484028201840190925281815292918301828280156102875780601f1061025c57610100808354040283529160200191610287565b820191906000526020600020905b81548152906001019060200180831161026a57829003601f168201915b505050505081565b336000908152600160205260409020548111156102ab57610200565b33600081815260016020908152604080832080548690039055600160a060020a03861680845292819020805486019055805193845290830191909152818101839052517f3990db2d31862302a685e8086b5755072a6e2b5b780af1ee81ece35ee3cd33459181900360600190a150505600a165627a7a72305820383284c7be6ce7a40cd7ecfd2f334a26968e7b27dec29a70986c60e09e54e8680029000000000000000000000000000000000000000000000000000000000000007b0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000d48656c6c6f2c20576f726c642100000000000000000000000000000000000000


6.上面加粗部分,表达了带参数的时候只能合约的code不同之处。
  如果要仔细体会和分析,可以在geth控制台执行web3.fromAscii来分析。
 
分享到:
评论

相关推荐

    C++构造函数初始化列表

    关于“C++构造函数初始化列表 ”的实例分析

    天轰穿系列教程之-16利用构造函数初始化对象

    天轰穿系列教程之-16利用构造函数初始化对象天轰穿系列教程之-16利用构造函数初始化对象天轰穿系列教程之-16利用构造函数初始化对象天轰穿系列教程之-16利用构造函数初始化对象天轰穿系列教程之-16利用构造函数初始...

    成员初始化列表与构造函数体中的区别详细解析

    C++ Primer中在讲构造函数初始化列表的时候有这么一段话:无论是在构造函数初始化列表中初始化成员,还是在构造函数体中对它们赋值,最终结果是相同的。不同之处在于,使用构造函数初始化列表的版本初始化数据成员,...

    c++ 子类构造函数初始化及父类构造初始化的使用

    主要介绍了c++ 子类构造函数初始化及父类构造初始化的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    c++初始化列表和构造函数初始化区别.pdf

    c++初始化列表和构造函数初始化区别.pdf

    C++类构造函数初始化列表

    构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如: class CExample { public: int a; float b; //构造函数初始化列表 CExample(): a(0...

    C++构造函数初始化顺序详解

    2.缺省构造函数时,系统将自动调用该缺省构造函数初始化对象,缺省构造函数会将所有数据成员都初始化为零或空 3.创建一个对象时,系统自动调用构造函数 析构函数 1.析构函数没有参数,也没有返回值。不能重载,也...

    C++ 构造函数初始化列表的好处

    C++ 类对像构造时,需要对类成员变量完成初始化赋值操作。...第三行是初始化列表构造 b1 时调用的复制构造函数。第四行调用了一次默认构造函数……第四行是哪儿来的?  这里需要陈述一下“复制构造函数”和

    以太坊智能合约示例与漏洞分析——竞拍合约

    智能合约定义成员变量、event等,构造函数初始化受益人、拍卖结束时间,如下所示: 出价的函数如下,标注payable说明函数可以接收转账,require(now &lt;= auctionEnd)检查拍卖是否结束,如果已经结束就抛出异常,...

    构造函数的部分初始化

    构造函数的部分初始化,可以更好地了解函数如何初始化

    C++关于构造函数的初始化

    关于C++构造函数初始化的详细介绍,值得学习的东西哦

    构造函数的冒号后初始化列表

    主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。

    关于C++中构造函数初始化成员列表的总结

    1.只能在构造函数初始化列表初始化的成员变量的类型?  a.const成员变量  b.引用类型的成员变量  c.static不能在初始化列表中进行初始化  d.类成员变量中有自定义类型的变量最好在初始化列表中进行初始化 2.初始...

    c++基础语法:构造函数初始化列表

    如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,而没有默认构造函数,这时要对这个类成员进行初始化,就必须调用这个类成员的带参数的构造函数,如果没有初始化列表...

    C++构造函数初始化顺序

    C++构造函数按下列顺序被调用:  (1)任何虚拟基类的构造函数按照它们被继承的顺序构造;  (2)任何非虚拟基类的构造函数按照它们被继承的顺序构造;  (3)任何成员对象的构造函数按照它们声明的顺序调用;  (4...

    构造函数实例(源码)

    包含默认构造函数 初始化构造函数 复制构造函数 转换构造函数

    C#关于构造函数初始化器的使用

    有时,在一个类中有几个构造函数,以容纳某些可选参数,这些构造函数都包含一些共同的代码。  例如,下面的情况: class Car { private string description; private uint nWheels; public Car(string model,...

    构造函数与析构函数

    (2)类的构造函数通过使用冒号:运算符提供了初始化成员的方法。 2.析构函数 析构函数在对象超出作用范围或使用delete运算符释放对象时被调用,用于释放对象占用的空间。如果用户没有显式地提供析构函数,系统会提供...

    编程思想14章构造函数的初始化表达式

    编程思想的第十四章,代码,本人亲测通过后才上传的 这段是介绍编程思想14章构造函数初始化表达式表

    构造函数不能声明为虚函数的原因及分析

    构造函数本身就是要初始化实例,那使用虚函数也没有实际意义呀。所以构造函数没有必要是虚函数。虚函数的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个成员函数。而构造函数是在创建对象时...

Global site tag (gtag.js) - Google Analytics