如果说整个Web3世界逐步搭建的过程像是在拼图,那么隐私保护便是图像中重要的一个部分,在Oasis,我们已经意识到隐私的重要性,也正因此我们打造了Sapphire,他将使我们在Web3中仍拥有区块链和智能合约的力量!
在以太坊这样的公链上我们也有其他方案可以实现数据的保密性,例如我们可以将信息链下取出来进行加密,但这种方式抑制了链上的完整性。并且适用的场景并不广泛!
//Declare state variables
address public buyer;
address public seller;
string public item;
uint256 public price;
//Declare event
event Purchased(address buyer,address seller,string item);
//Define constructor function
constructor(address _buyer,address _seller,
string memory _item,
uint256 _price){
//Assign values to state variables
Sapphire赋予隐私智能合约加密性和线上完整性,智能合约执行时,用户的敏感信息可以得到很好的保护,且因为与EVM兼容,用户还可以实现迅速的切换!一旦使用Oasis的技术将智能合约保密,开发人员就可以利用极具可扩展性的基础设施,同时保持数据的安全性和完整性。
与合约交互典型的做法是用诸如eth.contract()功能的抽象层,它会返回到javascript对象,和所有可用的合约功能一起,作为可调用的javascript功能。描述合约可用功能的标准方式是ABI定义。这个对象是一个字符串,它描述了调用签名和每个可用合约功能的返回值。
//Define buy function
function buy()public payable{
//Check if sender is buyer
require(msg.sender==buyer,
"Only buyer can buy");
//Check if value is equal to price
require(msg.value==price,
"Value must be equal to price");
//Transfer value to seller
payable(seller).transfer(msg.value);
//Emit event
emit Purchased(buyer,seller,item);
}
}
现在ABI中具体说明的所有功能调用都在合约实例中可用。你可以用两种方法中的一种来调用这些合约实例上的方法。
当用sendTransaction被调用的时候,功能调用通过发送交易来执行。需要花费以太币来发送,调用会永久记录在区块链上。用这种方式进行的调用返回值是交易散表。