Development of Ethereum DAPP with Java
Ethereum is an implementation of blockchain. In Ethereum network, many nodes are connected with each other to form Ethereum network:
Ethereum node software provides two core functions: data storage and contract code execution
in each Ethereum node, complete blockchain data is stored. Ethereum not only saves the transaction data on the chain, but also saves the compiled contract code on the chain
At the same time, a virtual machine is provided to execute the contract code Ethereum virtual machine
Ethereum blockchain not only stores data and code, but also contains a virtual machine (EVM) in each node to execute contract code - it sounds like a computer operating system
in fact, this is the core difference between Ethereum and bitcoin: the existence of virtual machine has brought blockchain into the era of 2.0 and made blockchain a friendly platform for application developers for the first time
the above content comes from the introction course of Ethereum DAPP development
Blockchain projects require high efficiency, so most of the core source code development is using C / C + +. However, if you are doing a blockchain project, unless you need to make a lot of adjustments to the source code, you may not choose to use Java. For general DAPP applications, java development should also be a good choice. For example, in the case of Ethereum blockchain, there is a web3j class library for Java, which is very convenient; Bitcoin has bitcoin J class library, which is also easy to use. It still depends on the level of application, what to do, and the situation of the team
share two Java blockchain tutorials:
-
java bitcoin details
-
java Ethereum development
< / OL >
java_ The home value is: the directory where JDK is installed, and mine is C: 92; Program Files\ Java\ jdk1.6.0_ 34
the classpath value is:;% JAVA_ HOME%\ lib\ tools.jar;% JAVA_ HOME%\ lib\ dt.jar;% JAVA_ HOME%\ bin;( Pay attention to the & quot& quot; To add)
Path: append at the beginning.;% JAVA_ HOME%\ bin;% JAVA_ HOME%\ jre\ bin;( Pay attention to the & quot& quot; To add)
after the installation, you can check whether the JDK is installed successfully. Open the CMD window and enter Java – version to view the version information of JDK.
DAPP is an Internet application. The biggest difference between DAPP and traditional app is that DAPP runs on a decentralized network, that is, a blockchain network. There is no centralized node in the network, which can control DAPP completely. As we all know, app is centralized. Need to request a server to get data, process data, etc
compared with DAPP, blockchain is the underlying environment for application running. It can be compared to IOS, andorid and other mobile operating systems running on various apps. Learning blockchain is not the bottom part of learning blockchain. Maybe more people need to learn the development of DAPP. Build and run applications in the blockchain environment< br />
a complete DAPP needs to meet the requirements of completely open source and autonomous applications. DAPP cannot be changed once it is deployed. The upgrade of the application can only be carried out after most users reach a consensus. All data must be encrypted and stored on the decentralized blockchain application platform. Secondly, DAPP must have token mechanism
DAPP can be fault-tolerant without single point of failure. They don't have centralized institutions to interfere. There will be no deletion or modification of some data. It can't even be shut down. Because the data is encrypted storage, there will be no user data leakage events like Facebook and Google
of course, at present, most DAPP procts are still in the experimental stage. Although blockchain technology has brought us a lot of imagination, the specific implementation of DAPP procts still needs to consider a lot of relevant factors.
Ruitai coin has not been launched on the third-party platform, but it is rumored that it will also be launched on the third-party platform.
DAPP can run on a centralized server that can interact with Ethereum nodes, or on any Ethereum node. Different from ordinary websites, DAPP can't run on ordinary servers. They need to submit transactions to the blockchain and read important data from the blockchain instead of the centralized database.
#import "ViewController.h"
@implementation ViewController
-(void)aaa:(UIButton *)btn
{
NSString *method=[NSString stringWithFormat:@"login"];
NSString *username=[NSString stringWithFormat:@"123"];
笭肠蒂段郦灯垫犬叮华 NSString *password=[NSString stringWithFormat:@"123"];
NSString *urlString= [NSString stringWithFormat:@"",@"method=",method,@"username=",username,@"password=",password];
ASIFormDataRequest *requestForm = [[ASIFormDataRequest alloc] initWithURL:[NSURL URLWithString:urlString]];
//设置需要POST的数据,这里提交两个数据,A=a&B=b
//[requestForm setPostValue:@"a" forKey:@"A"];
//[requestForm setPostValue:@"b" forKey:@"B"];
[requestForm startSynchronous];
//输入返回的信息
NSLog(@"response\n%@",[requestForm responseString]);
[requestForm release];
}
- (void)viewDidLoad
{
[super viewDidLoad];
button1=[[UIButton alloc]initWithFrame:CGRectMake(200, 200, 50, 50)];
button1.backgroundColor=[UIColor redColor];
[self.view addSubview:button1];
[button1 addTarget:self action:@selector(aaa:) forControlEvents:UIControlEventTouchUpInside];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
}
- (BOOL):(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != );
}
@end
客户端想要访问服务器
必须加上服务器的ip 服务端我是这样实现的
服务器是用java开发的
public
void doLogin(HttpServletRequest request,HttpServletResponse response) throws
IOException{
String
username=request.getParameter("username");
String
password=request.getParameter("password");
String
getStr=request.getParameter("A");
System.out.println("用户名:"+username+
"密码:"+password);
getAddr(request);
PrintWriter
out=response.getWriter();
String msg=null;
if(username!=null&&username.equals("123")&&password!=null
&&password.equals("123")&&
getStr!=null&&getStr.equals("a")){
msg="登陆成功";
}
else
{
msg="登陆失败";
}
out.print(msg);
out.flush();
out.close();
}
