- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以这段代码为例:
#[payable]
pub fn add_liquidity(&mut self, min_liquidity: u128, max_tokens: u128) -> U128 {
let deposit = env::attached_deposit();
let contract_near_balance = env::account_balance();
let user_address = env::predecessor_account_id();
let contract_address = env::current_account_id();
let token_amount = max_tokens;
println!("{}", token_amount);
let initial_liquidity = contract_near_balance;
println!("initial liquidity{}", initial_liquidity);
self.uni_totalsupply = initial_liquidity;
let balance_option = self.uni_balances.get(&user_address);
match balance_option {
Some(_) => {
self.uni_balances.insert(&user_address, &initial_liquidity);
}
None => {
self.uni_balances.insert(&user_address, &initial_liquidity);
}
}
Promise::new(self.avrit_token_id.clone()).function_call(
b"transfer_from".to_vec(),
json!({"owner_id":contract_address, "new_owner_id":"avrit.testnet", "amount": U128(token_amount)}).to_string().as_bytes().to_vec(),
DEPOSIT,
env::prepaid_gas() - GAS_FOR_SWAP,
);
initial_liquidity.into()
}
即使 promise 失败,它会在存储中设置 uni_balances 吗?如何使事务原子化?
最佳答案
合约调用不是原子的。为了使 promise 链原子化是使用 then
在初始 promise 之后调用的回调。在回调函数中,您可以像 here 一样检查之前的 promise 是否成功。 :
pub fn check_promise(&mut self) {
match env::promise_result(0) {
PromiseResult::Successful(_) => {
env::log(b"Check_promise successful");
self.checked_promise = true;
}
_ => panic!("Promise with index 0 failed"),
};
}
此时,您可以进行最终的状态更改,并且只有在整个事务成功时才会发生。
关于nearprotocol - 跨合约调用是原子的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66830988/
合约函数是可升级的,但状态不是,例如 #[near_bindgen] #[derive(BorshDeserialize, BorshSerialize, PanicOnDefault)] pub s
如何在 NEAR 上构建托管和多重签名合约?例如。与在 Solidity 中构建合约相比;需要什么,有没有例子? 最佳答案 我无法比较它的坚固性。但是在 NEAR 上,多重签名合约可以使用多个 Acc
如果有一系列 Action 需要在 NEAR 的智能合约中执行,并且通过给定合约的回调链接起来——如何为它们分配气体。 例如: pub fn some_method(&mut self, ...) -
我有这样的情况,一组两个合约被部署到两个地址,例如: share.ysn-1_0_0.ysn.testnet market.share.ysn-1_0_0.ysn.testnet 在这种情况下,sha
如果我理解正确,near dev-deploy 会为智能合约创建临时 dev-123-456 帐户,而 near deploy 将使用 testnet 帐户。 什么时候使用 near deploy 到
对于各种用例,显示某个账户余额的历史数据是很有值(value)的。 从 NEAR 协议(protocol)查询此数据的最佳方法是什么? 最佳答案 您将从此网址获取帐户交易历史记录:https://he
我有一个最初通过 near-cli 创建的帐户. 然后我生成了一个账本 key :near generate-key key --useLedgerKey="44'/397'/0'/0'/2'"并将其
是否可以使用 near cli. 获得接近帐户的余额? ? 最佳答案 运行: near state 应该做的伎俩: Account account.near { amount: 'XXXXXX'
以这段代码为例: #[payable] pub fn add_liquidity(&mut self, min_liquidity: u128, max_tokens: u128) -
是否有任何示例可用于从修改链上存储的调用返回值? 从读取中返回值当然不是问题,但有人提到从调用中获取返回值也是可能的。 最佳答案 我不确定你所说的获取返回值是什么意思,但这里有一个例子: export
从用户那里免费收取存储费用的最佳做法是什么?每次他们插入数据时,我都必须收取存储费吗?我可以在不制作函数 [payable] 的情况下收取存储费吗? 最佳答案 What are the best pr
我尝试按照此文档 - https://github.com/near/nearup#building-the-docker-image 使用 docker 设置 NEAR 主网存档节点. docker
NEAR的帐户可以有许多不同的 key 对来访问同一帐户。键也可以更改和旋转。这意味着使用特定用户的公用 key 加密消息的默认方法不起作用。 为特定用户加密消息的最佳方式是什么? 最佳答案 NEAR
所以我为我的合约实现了这个功能 #[payable] fn send_message(mut self, message: &str, receiver: &str) { 当我尝试使用 near-cl
我正在尝试调试以下交易的气体使用情况:https://explorer.near.org/transactions/HLCCBGUQLE1jUPJ7cSeaH9VPt4AAGhBLehB2F6zrx5
任何人都可以帮助我处理涉及值(value)/接近的交易/操作类型。我见过多种操作类型,如转移,绘制等 最佳答案 NEAR 协议(protocol)中只有 7 种原生 Action 类型: 转账(存款从
我有以下带有 impl 的结构: #[near_bindgen] #[derive(Default, Serialize, Deserialize, BorshDeserialize, BorshSe
在交易执行期间,我们计算我们“燃烧”了多少以及“使用了多少”。为什么我们必须分别跟踪这些计数器? 最佳答案 使用的气体包括燃烧的气体,所以 gas_used >= gas_burnt ,总是; 当任何
https://explorer.near.org/blocks/99qdUGNmGMMQQdKGmgA7Lf6PjaXAHgVVy53DLHJZpcbb 区 block - 35866073 有 5
一些从存储设备生成的公钥是 ed25519: 前缀后的 44 个字符(总共 52 个),有些是 43 个字符(总共 51 个)。这是允许的吗? ed25519: 是否需要在使用公钥时包含前缀? 最佳答
我是一名优秀的程序员,十分优秀!