10geth傳輸
『壹』 求求求求求求求求求!!!哪错了 C++++++++++++++++
void people::setN(char Name[]){
strcpy(Name,name);
}
参数不要与成员同名。所以你应该是写反了。
void people::setN(char name[]){
strcpy(Name,name);
}
error C2039:: is not a member of 'people'
这个错误很 明显, 你定义类的时候是写的void setI(int i);
调用的时候多了一个"D".
『贰』 2007年寒假中所发生的10条地理新闻有什么啊急!
在近30平方米的两个墙面上,绘画着文学名著《三国演义》中的24个经典故事,众人物肖像栩栩如生,笔画细腻而错落有致。近日,陕西省文物考古工作人员在秦岭深山中发现了这幅清代大型壁画。
天台寺坐落在陕西省凤县红花铺镇红花沟的一座山顶上,整个寺庙建筑呈四合院形式,中间是大殿,两边是偏殿。大殿左右两侧墙面上绘有《三国演义》中“桃园三结义”、“关圣人义释曹操”等24个经典故事。壁画上的人物衣服的褶皱、树木的明暗均对比十分鲜明,壁画上还有许多行书书法。
凤县文化馆工作人员李根成介绍说,经考证,此壁画应成画于清代道光年间,从画风上看是典型的民间工匠所为,像这样保存完整的清代巨幅壁画目前已不多见。此画对研究古代绘画技巧、风格可起到非常重要的作用。
2005年10月17日至18日,中国地理信息系统协会第九届年会在浙江杭州召开。中国地理信息系统协会喻永昌秘书长主持开幕式。中国地理信息系统协会陈军会长等致辞。会议的主题是“地理空间信息产业化与电子政务建设”。
北京时间25日凌晨,我国第22次南极考察格罗夫山队共收集陨石5282块。(一月)
目前世界最先进的深海探测船———日本“地球”号已整装起锚,向地球更深处探索。美联社25日报道说,“地球”号去年完工,装载世界最大深海钻头,一间高技术流动实验室,耗资573亿日元(约合5亿美元),现在它将开始为期一年的“试用期”。
中医治疗高血压获取重大成果发现气候变化秘密、寻找有助于解释生命起源的微生物和了解地震成因,是“地球”号三大目标。
随着全球气候日益变暖,沉睡在北极冰川下面的丰富资源引起了世界各国的关注。日本《产经新闻》18日发表了题为《北极资源之争愈演愈烈》的文章,全文如下:
北冰洋周边的俄罗斯、加拿大、美国、丹麦和挪威这5个国家,都对沉睡在北极丰富资源垂涎已久。由于全球变暖,各国为确保本国航线而采取的行动更加速了彼此间对北极圈资源利益的争夺。北极圈也由此成为沿岸各国为争夺资源而激烈“冲撞”的最前沿。
在一个位于加拿大埃尔斯米尔岛和丹麦格陵兰岛之间、面积只有1.3平方公里的无人小岛的归属问题上,加拿大和丹麦两国僵持不下,就是因为那些隐藏在北冰洋海水下面的矿产和水产资源。
实际上,各国争夺的“战场”还不止这一个无人小岛。挪威和俄罗斯在巴伦支海域展开了争夺,俄罗斯和加拿大又都主张拥有从北冰洋沿岸到北极点这部分地区的主权。1961年《南极条约》生效,冻结了各国对南极主权的争夺。但北极目前尚未签订这样的条约,因此各国只能依据《联合国海洋法公约》处理北极附近地区的资源开发、大陆架以及公海利用的事宜和争端。因此,丹麦、挪威和加拿大纷纷向北冰洋派遣调查队,积极地展开调查活动。
此外,全球变暖导致北极冰盖面积迅速缩小,这也在一定程度上加速了各国对北极周边地区的窥视。
北纬60度以北的地区是地下资源的宝库。虽然受永久冻土和海水的妨碍,开发计划一直原地踏步,但美国的研究机构仍然在2005年推测阿拉斯加州的北极圈附近拥有高达35万亿立方米的天然气储量。除了石油和天然气以外,北极的铁、锌、钻石等矿产资源的埋藏量也相当可观,据说地球上尚未被人类发现的资源中有1/4蕴藏在北极。
由于中东局势不稳定和海盗猖獗,苏伊士运河和马六甲海峡这两条航线均存在很大风险。因此,日本也对北冰洋这条航线颇为关注。从事该航线可行性研究的日本海洋政策研究财团特别研究员北川弘光认为:“北冰洋航线能够比向南绕行节省约一周的时间。同时,还能探索确保能源的新途径,危机管理层面上的意义极其重大。”
来自欧洲和新加坡的科学家称,他们发现了世界上最小的鱼,这种鱼生活在东南亚的泥碳沼泽中,即使完全发育成熟,大小也和大点儿的蚊子差不了多少。科学家们在英国皇家学会学报B公布了他们的发现,并称这种名为Paedocypris progenetica的鱼是鲤鱼的远亲。
Paedocypris progenetica通体通明,生活在印尼苏门达腊岛和马来西亚婆罗洲的高酸泥碳沼泽中,目前正受到当地林业和农业的威胁。它个头非常小,科学家借助立体显微镜才能测量其大小。Paedocypris progenetica的生活环境非常独特,人们称这些沼泽为“黑水”。下面的泥碳土有几米厚,上面的水呈红黑色,象浓茶一样,酸性非常高,PH值为3和酸苹果相同。
科学家们在苏门答腊逮到了最小的Paedocypris progenetica
成年样本,那是一条发育成熟的雌性鱼,它从鼻子到尾巴全长7.9毫米,这使它不仅成为全世界最小的鱼,同时也成为全世界最小的脊椎动物。它打破了此前一条西非矬虾虎鱼保持的纪录,那条鱼在完全性成熟后的体长是8毫米。
科学家们还在马来西亚婆罗洲的沙捞越发现了一种相关的Paedocypris鱼种P micromegethes,这种鱼体长大约8.8毫米,是迄今为止发现的第二小的淡水脊椎动物。
新加坡国立大学“拉夫莱斯生物多样性研究博物馆”的马莱斯-考特拉特和谭煜辉发现了这条鱼。为他们提供协助的是“英国国立自然历史博物馆”的拉尔夫-布里茨和德国杜宾根“马克斯-普兰克发生生物学学院”的Kai-Erik Witte。
考特拉特称P progenetica“头骨没有得到完全进化”,因此大脑裸露在外。为了适应所生存的特殊环境,它们的鳍已经有了很大的变化。雄性鱼的骨盆带前端有一块很硬的肉垫,交配时有助于附在雌鱼身上。他说:“发现了这么小的一种奇特的鱼,表明我们对东南亚的生物多样性了解还很少。更加严重的是,因为这种鱼的栖息地正在以非常快的速度消失,此物种的命运令人堪忧。”
国科学院可可西里科考队一行61人经过41天艰苦跋涉,于昨天下午6时到达青海省海西蒙古族藏族自治州茫崖镇,实现了“人类首次穿越可可西里核心地带”的壮举。
今天,在当地举行了简短而隆重的欢迎仪式。记者拨通了科考队队长丁林的手机,“放心吧,”丁林在话机那边笑答,“人员车辆毫发无损!”
中科院可可西里科考队于9月20日从拉萨出发,65人的队伍途经双湖、普若岗日、多格错仁、岗扎日、鲸鱼湖奔赴茫崖,途中曾创下5辆越野车在50公里路途中陷车15次、历时8小时的纪录。12吨的通信保障车、30来吨重的油料车艰难跋涉,不得不于10月8日离开队伍,提前拐到终点,逆向迎接科考队。随队医生、两名厨师和1名司机也因身体原因中途离队。
丁林说,“我们对核心区的地质情况、冰川、湖泊、河流、冻土、火山岩石、矿产资源、动植物分布状况以及地层古生物情况都进行了考察,取得了宝贵的第一手资料,并第一次对这个地区的气象状况进行了数据信息收集。经过梳理后发现大致有九大收获。”科考队将于11月4日在北京举行新闻发布会,详细公布科考成果。
据英国《泰晤士报》报道,英国多位科学家30日称,国际社会采取行动终止气候变化的努力必须在20年内做出,否则全球变暖问题将无法逆转。
到2025年,必须有技术能够使每年的碳释放量降低2.6%,这样才能避免发生灾难性的气候变化。科学家们向英国皇家学会表示,如果稍迟一步,将意味着进入大气中的二氧化碳的量无法降至足够的标准。
全球变暖的状况比2001年时人们担心的还要恶劣,如果气温不保持温定,融化的冰将使海平面增高至40英尺。在南极,一个足以把英国淹没3次的冰区可能发生漂移并融化。
英国皇家学会30日发表的一份报告对气候研究进行了综合分析,报告称如果整个国际社会不采取行动,气态系统将遭到不可逆转的破坏。
英国首相布莱尔专门为此报告撰写了序言,他说:“现在已经非常清楚,200年来全球人口增至原来的6倍,随着工业化和经济的增长,温室气体的排放已经使全球变暖到了一个不堪承受的地步。”
“廷德气候变化研究中心”的雷切尔-华伦博士昨天在皇家学会向听众席上的科学家和政策制定者们表示,各国政府还有20年做出努力的时间。该中心的另一位科学家特里-巴克尔称,引入烟尘排放税是有效控制工业部门温室气体排放量的好办法。他设计的一套电脑模型显示,如果政府同意征收此税,同时鼓励反排放技术方面的投资,在几十年的时间内温室气体排放量将大大降低。
“英国南极勘查”组织的克里斯-拉普里称,从2001年至今,西南极冰原已经在以惊人的速度碎裂。他的同事,大卫-沃恩昨天说格陵兰岛和西南极冰的融化,可能分别将使海平面上升16英尺以上。
受天文、水文和气象因素的共同影响 特大咸潮将再袭珠三角
据广东天文学会预告:因受天文、水文和气象因素的共同影响,今年一月二十五日至三十日,珠江三角洲特大咸潮将会再次卷土重来。
磨刀门水道的大涌口水闸,将会连续几天出现每升含氯量超过六千毫克的特大咸潮。由于今年一月中旬珠江实施压咸补淡调水工程,有关部门已储备了充足的淡水。尽管这次特大咸潮来势汹汹,但不会影响广东省珠海、中山和番禺的水厂供水和饮水安全。
造成这次特大咸潮卷土重来的天文因素是:一月二十五日,月球运行到地球南回归线的上空,从而出现“回归大潮”;一月二十九日,太阳、月球和地球排成一条直线(朔),从而形成“朔望大潮”;一月三十日,月球距离地球最近,从而发生“近地大潮”。这三个大潮在短时间内汇合和叠加,使咸潮上溯珠江相当显著。
造成这次特大咸潮卷土重来的气象因素是:广州地区从去年九月至今年一月,连续五个月的雨量比常年明显偏少。其中从去年九月二十八日至今,广州雨量只有十多毫米,不仅比常年同期偏少,而且比上三年的同期都偏少。
再有,去年中国出现的台风,大多数在浙江和福建沿海登陆,在广东沿海登陆严重偏少。因此,去年夏秋季节,广东省沿海降雨偏少,导致该省沿海海水含氯度偏高。因而去秋今冬,珠江三角洲咸潮出现偏早,咸潮含氯度偏高是大有原因的。
造成这次特大咸潮卷土重来的水文因素是:珠江上游来水锐减。今年一月上旬,珠江流域实施历史上第二次调水压咸,收到了良好的效果。广东省珠海、中山和番禺等地,共抢抽淡水三千五百万立方米(吨),有力地保障了今年春节期间数百万人民群众的用水和饮水安全。
调水压咸期间,西江梧州水文站的水位大幅度提高,最大径流量每秒超过二千二百立方米。由于“一春江水向东流”,使珠江下游的含氯度显著降低。其中横门水道的小隐水闸,在一月二十日和二十二日,连续七十二个小时不见咸潮踪影,这是自去年十一月三十日以来首次出现长时间无咸潮的可喜现象。由于一月二十四日,梧州水文站径流量已降至每秒一千五百立方米以下。上游来水减少,意味着咸潮反弹。
预计这次特大咸潮将在一月三十一日以后明显减弱,未来珠江三角洲的咸潮状况如何,取决于珠江流域的降雨量。(《中国新闻网》郭军 李建基)
广州度过55年来最暖春节
新华网广州2月1日电(黄忠、肖文峰)广州正在度过55年来最暖和的一个春节。大年初三,广州市的最高气温达到28.4摄氏度,突破了1951以来广州市1月份和2月上旬的最高气温纪录。
据广东省气象台介绍,年初一至初三,广东省大部分地区阳光普照,最高气温普遍在26摄氏度至29摄氏度之间,年初四与年初五两天广州的温暖天气仍将继续。由于有小股冷空气1日开始南下,2月1日,粤北地区的气温开始下降3至4摄氏度,其他地区天气暖和。
广州温暖的天气将在2月2日夜间开始变化。据气象部门预报,从2日夜间到3日,广州的气温将迅速降到14摄氏度至20摄氏度之间,到4日,广州的天气将彻底“变脸”,天气转阴,气温降至12摄氏度至18摄氏度。
气候恶劣导致波兰展览大厅坍塌事故营救困难
中新网1月29日电据美国CNN报道:波兰南部卡托维兹附近霍茹夫一个展览厅28日发生屋顶倒塌事故,至少造成20人死亡、数百人受伤。事故发生后,波兰有关部门迅速派出人员展开营救,大约88人被送往医院救治,但是仍然有约100人在严寒中被困在屋顶下。
但是由于当地气候十分恶劣导致展览大厅坍塌事故的营救工作很困难,目前营救人员正使用起吊设备和特种犬设法营救被困人员。最近,霍茹夫地区曾降大雪,部分地区的积雪厚度达30厘米,现在营救现场的气温已经降到了零下18摄氏度。救援人员不停的向被困人员喊话,要他们保持镇静,并告诉他们救援工作正在紧张的进行。 在此次事故中,共有数百平方米的展厅屋顶发生倒塌。事故发生时,展厅内至少有500人正在观看一场信鸽展。
『叁』 C放言编程:主函数中有10个学生3门功课的信息,存放在二维数组中,用自定义函数作如下要求的操作,咋编
设三门功课分别为语文、数学、英语。
代码文本:
#include "stdio.h"
void getAVR(int (*p)[3],int n){
int i,j,s;
char str[3][5]={"语文","数学","英语"};
printf(" 课程 平均分 ================ ");
for(i=0;i<3;i++){
printf(" %s ",str[i]);
for(s=j=0;j<n;s+=p[j++][i]);
printf("%.2f ",s/10.0);
}
}
void getH_L(int (*p)[3],int n){
char i,j,Hi,Lo,str[3][5]={"语文","数学","英语"};
printf(" 课程 最高分 最低分 ======================== ");
for(i=0;i<3;i++){
printf(" %s ",str[i]);
for(Hi=Lo=p[i][j=0];j<10;j++)
if(Hi<p[i][j])
Hi=p[i][j];
else if(Lo>p[i][j])
Lo=p[i][j];
printf(" %d %d ",Hi,Lo);
}
}
void getNofF(int (*p)[3],int n){
char i,j,f,str[3][5]={"语文","数学","英语"};
printf(" 课程 不及格人数 ==================== ");
for(i=0;i<3;i++){
printf(" %s ",str[i]);
for(f=j=0;j<n;f+=p[j++][i]<60);
printf(" %d ",f);
}
}
int main(int argc,char *argv[]){
int a[10][3]={{70,86,91},{55,89,97},{96,69,59},{60,77,88},
{78,77,61},{87,76,93},{66,99,41},{82,80,71},
{92,64,67},{81,67,79}};
getAVR(a,10);
putchar(' ');
getH_L(a,10);
putchar(' ');
getNofF(a,10);
putchar(' ');
return 0;
}
『肆』 java编写-一个程序, 有一个标题为“计算圆柱形”的窗口,布局策略为Flowlayout 布局。
摘要 import java.util.Scanner;
『伍』 质量效应3 塔莉存活
那个其实不能选楷模,塔莉存活和geth个体存活只能二选一。上传的话,geth会重创奎利舰队,奎利人反攻母星失败,塔莉悲愤而死。不上传,geth个体会和薛哥反目,试图杀掉薛哥,这时候塔莉会干掉个体。geth大败,奎利人回到母星,塔莉good end。当然,选择不同会导致之后得到的兵力有所不同。 至于克洛根那个到那里基本就结束了,没啥好说。 另外,队员来到你屋不见得是攻略flag,一般来说要有明显表达爱意的桥段才行。 我的经验就这样,你可以参考一下
『陆』 c++建立返回值为成员指针的成员函数的问题 求大神解答
#include<iostream>
usingnamespacestd;
intconstMAXLEN=10;//Time的字符存储长度
classTime{
public:
Time(inth=0,intm=0,ints=0){
hour=h;
minute=m;
second=s;
}
voidSeth(inth){hour=h;}
voidSetm(intm){minute=m;}
voidSets(ints){second=s;}
voidShow()const{printf("%02d:%02d:%02d ",hour,minute,second);}
intGeth()const{returnhour;}
intGetm()const{returnminute;}
intGets()const{returnsecond;}
private:
inthour;
intminute;
intsecond;
};
classDynamicTimeArray{
public:
explicitDynamicTimeArray(intn=0){
if(n>0){
point=newTime[n];
size=n;
}
else{
point=NULL;
size=0;
}
}
DynamicTimeArray(char*tarr[],intn);
voidsort();
intsearch(constTime&t)const;
booledit(constTime&t);
boolmodify(intindex);
voiddisplay();
~DynamicTimeArray(){delete[]point;}
private:
Time*point;
intsize;
};
DynamicTimeArray::DynamicTimeArray(char*tarr[],intn){
point=newTime[n];
inth,m,s;
for(inti=0;i<n;++i){
sscanf(tarr[i],"%d:%d:%d",&h,&m,&s);
point[i].Seth(h);
point[i].Setm(m);
point[i].Sets(s);
}
size=n;
}
voidDynamicTimeArray::sort(){
inti,j,k;
charfront[MAXLEN],next[MAXLEN];
Timet;
for(i=0;i<size-1;++i){
k=i;
sprintf(front,"%02d:%02d:%02d",point[i].Geth(),point[i].Getm(),point[i].Gets());
for(j=i+1;j<size;++j){
sprintf(next,"%02d:%02d:%02d",point[j].Geth(),point[j].Getm(),point[j].Gets());
if(strcmp(front,next)>0){
k=j;
sprintf(front,"%02d:%02d:%02d",point[k].Geth(),point[k].Getm(),point[k].Gets());
}
}
if(k!=i){
t=point[k];
point[k]=point[i];
point[i]=t;
}
}
}
intDynamicTimeArray::search(constTime&t)const{
intlow=0,high=size-1,mid,cmpres;
chardest[MAXLEN],tmp[MAXLEN];
sprintf(dest,"%02d:%02d:%02d",t.Geth(),t.Getm(),t.Gets());
while(low<=high){
mid=(low+high)/2;
sprintf(tmp,"%02d:%02d:%02d",point[mid].Geth(),point[mid].Getm(),point[mid].Gets());
cmpres=strcmp(dest,tmp);
if(cmpres<0)high=mid-1;
elseif(cmpres==0)returnmid;
elselow=mid+1;
}
return-1;
}
boolDynamicTimeArray::edit(constTime&t){
intn,res=search(t);
if(res<0){
cout<<"没找到:";
t.Show();
returnfalse;
}
t.Show();
cout<<point[res].Geth()<<"改为:";
cin>>n;
point[res].Seth(n);
cout<<point[res].Getm()<<"改为:";
cin>>n;
point[res].Setm(n);
cout<<point[res].Gets()<<"改为:";
cin>>n;
point[res].Sets(n);
returntrue;
}
boolDynamicTimeArray::modify(intindex){
intn;
if(index<0||index>size-1){
cout<<"数组索引越界。 ";
returnfalse;
}
point[index].Show();
cout<<point[index].Geth()<<"改为:";
cin>>n;
point[index].Seth(n);
cout<<point[index].Getm()<<"改为:";
cin>>n;
point[index].Setm(n);
cout<<point[index].Gets()<<"改为:";
cin>>n;
point[index].Sets(n);
returntrue;
}
voidDynamicTimeArray::display(){
for(inti=0;i<size;++i)
point[i].Show();
}
intmain(){
char*st[MAXLEN]={"18:56:32","25:01:01","31:10:31","10:03:20","12:12:31","21:03:08"};
inth,m,s;
DynamicTimeArrayta(st,6);
Timet;
cout<<"排序前: ";
ta.display();
ta.sort();
cout<<"排序后: ";
ta.display();
sscanf(st[1],"%d:%d:%d",&h,&m,&s);
t.Seth(h);
t.Setm(m);
t.Sets(s);
ta.edit(t);
ta.modify(5);
cout<<"修改后: ";
ta.sort();
ta.display();
return0;
}
『柒』 创建节点目录时不需要拷贝公链下的哪个文件
摘要 您好,1. 创建密码文件 > echo “111111” > .passwd
『捌』 以太坊是什么丨以太坊开发入门指南
以太坊是什么丨以太坊开发入门指南
很多同学已经跃跃欲试投入到区块链开发队伍当中来,可是又感觉无从下手,本文将基于以太坊平台,以通俗的方式介绍以太坊开发中涉及的各晦涩的概念,轻松带大家入门。
以太坊是什么
以太坊(Ethereum)是一个建立在区块链技术之上, 去中心化应用平台。它允许任何人在平台中建立和使用通过区块链技术运行的去中心化应用。
对这句话不理解的同学,姑且可以理解为以太坊是区块链里的Android,它是一个开发平台,让我们就可以像基于Android Framework一样基于区块链技术写应用。
在没有以太坊之前,写区块链应用是这样的:拷贝一份比特币代码,然后去改底层代码如加密算法,共识机制,网络协议等等(很多山寨币就是这样,改改就出来一个新币)。
以太坊平台对底层区块链技术进行了封装,让区块链应用开发者可以直接基于以太坊平台进行开发,开发者只要专注于应用本身的开发,从而大大降低了难度。
目前围绕以太坊已经形成了一个较为完善的开发生态圈:有社区的支持,有很多开发框架、工具可以选择。
智能合约
什么是智能合约
以太坊上的程序称之为智能合约, 它是代码和数据(状态)的集合。
智能合约可以理解为在区块链上可以自动执行的(由事件驱动的)、以代码形式编写的合同(特殊的交易)。
在比特币脚本中,我们讲到过比特币的交易是可以编程的,但是比特币脚本有很多的限制,能够编写的程序也有限,而以太坊则更加完备(在计算机科学术语中,称它为是“图灵完备的”),让我们就像使用任何高级语言一样来编写几乎可以做任何事情的程序(智能合约)。
智能合约非常适合对信任、安全和持久性要求较高的应用场景,比如:数字货币、数字资产、投票、保险、金融应用、预测市场、产权所有权管理、物联网、点对点交易等等。
目前除数字货币之外,真正落地的应用还不多(就像移动平台刚开始出来一样),相信1到3年内,各种杀手级会慢慢出现。
编程语言:Solidity
智能合约的默认的编程语言是Solidity,文件扩展名以.sol结尾。
Solidity是和JavaScript相似的语言,用它来开发合约并编译成以太坊虚拟机字节代码。
还有长像Python的智能合约开发语言:Serpent,不过建议大家还是使用Solidity。
Browser-Solidity是一个浏览器的Solidity IDE, 大家可以点进去看看,以后我们更多文章介绍Solidity这个语言。
运行环境:EVM
EVM(Ethereum Virtual Machine)以太坊虚拟机是以太坊中智能合约的运行环境。
Solidity之于EVM,就像之于跟JVM的关系一样,这样大家就容易理解了。
以太坊虚拟机是一个隔离的环境,在EVM内部运行的代码不能跟外部有联系。
而EVM运行在以太坊节点上,当我们把合约部署到以太坊网络上之后,合约就可以在以太坊网络中运行了。
合约的编译
以太坊虚拟机上运行的是合约的字节码形式,需要我们在部署之前先对合约进行编译,可以选择Browser-Solidity Web IDE或solc编译器。
合约的部署
在以太坊上开发应用时,常常要使用到以太坊客户端(钱包)。平时我们在开发中,一般不接触到客户端或钱包的概念,它是什么呢?
以太坊客户端(钱包)
以太坊客户端,其实我们可以把它理解为一个开发者工具,它提供账户管理、挖矿、转账、智能合约的部署和执行等等功能。
EVM是由以太坊客户端提供的。
Geth是典型的开发以太坊时使用的客户端,基于Go语言开发。 Geth提供了一个交互式命令控制台,通过命令控制台中包含了以太坊的各种功能(API)。Geth的使用我们之后会有文章介绍,这里大家先有个概念。
Geth控制台和Chrome浏览器开发者工具里的面的控制台是类似,不过是跑在终端里。
相对于Geth,Mist则是图形化操作界面的以太坊客户端。
如何部署
智能合约的部署是指把合约字节码发布到区块链上,并使用一个特定的地址来标示这个合约,这个地址称为合约账户。
以太坊中有两类账户:
· 外部账户
该类账户被私钥控制(由人控制),没有关联任何代码。
· 合约账户
该类账户被它们的合约代码控制且有代码与之关联。
和比特币使用UTXO的设计不一样,以太坊使用更为简单的账户概念。
两类账户对于EVM来说是一样的。
外部账户与合约账户的区别和关系是这样的:一个外部账户可以通过创建和用自己的私钥来对交易进行签名,来发送消息给另一个外部账户或合约账户。
在两个外部账户之间传送消息是价值转移的过程。但从外部账户到合约账户的消息会激活合约账户的代码,允许它执行各种动作(比如转移代币,写入内部存储,挖出一个新代币,执行一些运算,创建一个新的合约等等)。
只有当外部账户发出指令时,合同账户才会执行相应的操作。
合约部署就是将编译好的合约字节码通过外部账号发送交易的形式部署到以太坊区块链上(由实际矿工出块之后,才真正部署成功)。
运行
合约部署之后,当需要调用这个智能合约的方法时只需要向这个合约账户发送消息(交易)即可,通过消息触发后智能合约的代码就会在EVM中执行了。
Gas
和云计算相似,占用区块链的资源(不管是简单的转账交易,还是合约的部署和执行)同样需要付出相应的费用(天下没有免费的午餐对不对!)。
以太坊上用Gas机制来计费,Gas也可以认为是一个工作量单位,智能合约越复杂(计算步骤的数量和类型,占用的内存等),用来完成运行就需要越多Gas。
任何特定的合约所需的运行合约的Gas数量是固定的,由合约的复杂度决定。
而Gas价格由运行合约的人在提交运行合约请求的时候规定,以确定他愿意为这次交易愿意付出的费用:Gas价格(用以太币计价) * Gas数量。
Gas的目的是限制执行交易所需的工作量,同时为执行支付费用。当EVM执行交易时,Gas将按照特定规则被逐渐消耗,无论执行到什么位置,一旦Gas被耗尽,将会触发异常。当前调用帧所做的所有状态修改都将被回滚, 如果执行结束还有Gas剩余,这些Gas将被返还给发送账户。
如果没有这个限制,就会有人写出无法停止(如:死循环)的合约来阻塞网络。
因此实际上(把前面的内容串起来),我们需要一个有以太币余额的外部账户,来发起一个交易(普通交易或部署、运行一个合约),运行时,矿工收取相应的工作量费用。
以太坊网络
有些着急的同学要问了,没有以太币,要怎么进行智能合约的开发?可以选择以下方式:
选择以太坊官网测试网络Testnet
测试网络中,我们可以很容易获得免费的以太币,缺点是需要发很长时间初始化节点。
使用私有链
创建自己的以太币私有测试网络,通常也称为私有链,我们可以用它来作为一个测试环境来开发、调试和测试智能合约。
通过上面提到的Geth很容易就可以创建一个属于自己的测试网络,以太币想挖多少挖多少,也免去了同步正式网络的整个区块链数据。
使用开发者网络(模式)
相比私有链,开发者网络(模式)下,会自动分配一个有大量余额的开发者账户给我们使用。
使用模拟环境
另一个创建测试网络的方法是使用testrpc,testrpc是在本地使用内存模拟的一个以太坊环境,对于开发调试来说,更方便快捷。而且testrpc可以在启动时帮我们创建10个存有资金的测试账户。
进行合约开发时,可以在testrpc中测试通过后,再部署到Geth节点中去。
更新:testrpc 现在已经并入到Truffle 开发框架中,现在名字是Ganache CLI。
Dapp:去中心化的应用程序
以太坊社区把基于智能合约的应用称为去中心化的应用程序(DecentralizedApp)。如果我们把区块链理解为一个不可篡改的数据库,智能合约理解为和数据库打交道的程序,那就很容易理解Dapp了,一个Dapp不单单有智能合约,比如还需要有一个友好的用户界面和其他的东西。
Truffle
Truffle是Dapp开发框架,他可以帮我们处理掉大量无关紧要的小事情,让我们可以迅速开始写代码-编译-部署-测试-打包DApp这个流程。
总结
我们现在来总结一下,以太坊是平台,它让我们方便的使用区块链技术开发去中心化的应用,在这个应用中,使用Solidity来编写和区块链交互的智能合约,合约编写好后之后,我们需要用以太坊客户端用一个有余额的账户去部署及运行合约(使用Truffle框架可以更好的帮助我们做这些事情了)。为了开发方便,我们可以用Geth或testrpc来搭建一个测试网络。
注:本文中为了方便大家理解,对一些概念做了类比,有些严格来不是准确,不过我也认为对于初学者,也没有必要把每一个概念掌握的很细致和准确,学习是一个逐步深入的过程,很多时候我们会发现,过一段后,我们会对同一个东西有不一样的理解。
『玖』 java 上机试验:类与对象的试验
public class MyRectangle {
//四个私有变量
private int xUp, yUp;
private int xDown, yDown;
//空构造函数
public MyRectangle() {
}
//带有四个参数的构造函数,并初始化
public MyRectangle(int xup, int yup, int xdown, int ydown) {
this.xUp = xup;
this.yUp = yup;
this.xDown = xdown;
this.yDown = ydown;
}
//获取宽度
public int getW() {
return this.xDown - this.xUp;
}
//获取高度
public int getH() {
return this.yUp - this.yDown;
}
//计算面积
public int area() {
return this.getW() * this.getH();
}
//重写toString返回宽度、高度、面积
public String toString() {
return ("width=: " + this.getW() + "\nheight=: " + this.getH() + "\narea=: " + this.area() + "");
}
public static void main(String[] args) {
//实例化对象
MyRectangle myrectangle = new MyRectangle(10, 30, 20, 10);
//打印输出
System.out.println(myrectangle);
}
}
测试结果:
width=: 10
height=: 20
area=: 200