Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

name-service: Migrate to cosmwasm v0.11.0 #97

Merged
merged 29 commits into from
Nov 11, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
6b03df4
Update cosmwasm to v0.11.0-alpha2 in Cargo.toml
orkunkl Oct 5, 2020
5960b88
name-service: Migrate to cosmwasm v0.11.0-alpha3
orkunkl Oct 5, 2020
ba2b8dc
Fix error display
orkunkl Oct 5, 2020
41e6e87
Update cosmwasm to v0.11.0-alpha2 in Cargo.toml
orkunkl Oct 5, 2020
9076d09
name-service: Migrate to cosmwasm v0.11.0-alpha3
orkunkl Oct 5, 2020
b2b92c1
Fix error display
orkunkl Oct 5, 2020
868afda
Apply suggestions from code review
orkunkl Oct 5, 2020
8c24702
Merge branch 'cw-0.11.0-name-service' of github.com:CosmWasm/cosmwasm…
orkunkl Oct 12, 2020
4863913
name-service: Migrate to cw v0.11.0
orkunkl Oct 12, 2020
771282f
Capitalize errors
orkunkl Oct 13, 2020
4de51a1
Apply review recommendations
orkunkl Oct 13, 2020
eeb60ec
Add helpers.ts
orkunkl Oct 15, 2020
fd84824
Improve helpers
orkunkl Oct 16, 2020
09033fd
Update version to v0.7.0
orkunkl Oct 16, 2020
1530ad6
Compile wasm
orkunkl Oct 16, 2020
9c1534e
Finish helpers.js
orkunkl Oct 16, 2020
32fb024
Remove feature: backtraces
maurolacy Nov 8, 2020
14717de
Set version: 0.12.0-alpha2
maurolacy Nov 8, 2020
bf553f4
Migrate contract code to 0.12.0
maurolacy Nov 8, 2020
206c73f
Migrate unit tests to 0.12.0
maurolacy Nov 8, 2020
5e19527
Set cosmjs/cli version
maurolacy Nov 9, 2020
fd16ed7
Update nameservice/helpers.ts (HdPath)
maurolacy Nov 9, 2020
1e5854a
Update nameservice/helpers.ts (denom)
maurolacy Nov 9, 2020
e313bc7
Update nameservice/helpers.ts (denom)
maurolacy Nov 9, 2020
84ee756
Update helpers.ts (feeToken)
maurolacy Nov 9, 2020
db534da
Update nameservice/helpers.ts (coral -> cosmos)
maurolacy Nov 9, 2020
649ba62
Update helpers.ts (ushell -> ucosm)
maurolacy Nov 9, 2020
28b2013
Update helpers.ts (ushell -> ucosm)
maurolacy Nov 9, 2020
c3fac5f
Merge pull request #108 from CosmWasm/cw-0.12.0-name-service
webmaster128 Nov 11, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions nameservice/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions nameservice/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ cranelift = ["cosmwasm-vm/default-cranelift"]
singlepass = ["cosmwasm-vm/default-singlepass"]

[dependencies]
cosmwasm-std = "0.11.0-alpha3"
cosmwasm-storage = "0.11.0-alpha3"
cosmwasm-std = "0.11.0"
cosmwasm-storage = "0.11.0"
thiserror = { version = "1.0.20" }
schemars = "0.7"
serde = { version = "1.0.103", default-features = false, features = ["derive"] }

[dev-dependencies]
cosmwasm-vm = { version = "0.11.0-alpha3", default-features = false }
cosmwasm-schema = "0.11.0-alpha3"
cosmwasm-vm = { version = "0.11.0", default-features = false }
cosmwasm-schema = "0.11.0"
32 changes: 19 additions & 13 deletions nameservice/src/contract.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use cosmwasm_std::{
to_binary, Api, Binary, Env, Extern, HandleResponse, HumanAddr, InitResponse, InitResult,
Querier, StdResult, Storage,
MessageInfo, Querier, StdResult, Storage,
};

use crate::coin_helpers::assert_sent_sufficient_coin;
Expand All @@ -14,6 +14,7 @@ const MAX_NAME_LENGTH: u64 = 64;
pub fn init<S: Storage, A: Api, Q: Querier>(
deps: &mut Extern<S, A, Q>,
_env: Env,
_info: MessageInfo,
msg: InitMsg,
) -> InitResult {
let config_state = Config {
Expand All @@ -29,27 +30,29 @@ pub fn init<S: Storage, A: Api, Q: Querier>(
pub fn handle<S: Storage, A: Api, Q: Querier>(
deps: &mut Extern<S, A, Q>,
env: Env,
info: MessageInfo,
msg: HandleMsg,
) -> Result<HandleResponse, ContractError> {
match msg {
HandleMsg::Register { name } => try_register(deps, env, name),
HandleMsg::Transfer { name, to } => try_transfer(deps, env, name, to),
HandleMsg::Register { name } => try_register(deps, env, info, name),
HandleMsg::Transfer { name, to } => try_transfer(deps, env, info, name, to),
}
}

pub fn try_register<S: Storage, A: Api, Q: Querier>(
deps: &mut Extern<S, A, Q>,
env: Env,
_env: Env,
info: MessageInfo,
name: String,
) -> Result<HandleResponse, ContractError> {
// we only need to check here - at point of registration
validate_name(&name)?;
let config_state = config(&mut deps.storage).load()?;
assert_sent_sufficient_coin(&env.message.sent_funds, config_state.purchase_price)?;
assert_sent_sufficient_coin(&info.sent_funds, config_state.purchase_price)?;

let key = name.as_bytes();
let record = NameRecord {
owner: deps.api.canonical_address(&env.message.sender)?,
owner: deps.api.canonical_address(&info.sender)?,
};

if (resolver(&mut deps.storage).may_load(key)?).is_some() {
Expand All @@ -65,43 +68,46 @@ pub fn try_register<S: Storage, A: Api, Q: Querier>(

pub fn try_transfer<S: Storage, A: Api, Q: Querier>(
deps: &mut Extern<S, A, Q>,
env: Env,
_env: Env,
info: MessageInfo,
name: String,
to: HumanAddr,
) -> Result<HandleResponse, ContractError> {
let api = deps.api;
let config_state = config(&mut deps.storage).load()?;
assert_sent_sufficient_coin(&env.message.sent_funds, config_state.transfer_price)?;
assert_sent_sufficient_coin(&info.sent_funds, config_state.transfer_price)?;

let new_owner = deps.api.canonical_address(&to)?;

resolver(&mut deps.storage).update(name.clone().as_bytes(), |record| {
let key = name.as_bytes();
resolver(&mut deps.storage).update(key, |record| {
if let Some(mut record) = record {
if api.canonical_address(&env.message.sender)? != record.owner {
if api.canonical_address(&info.sender)? != record.owner {
return Err(ContractError::Unauthorized {});
}

record.owner = new_owner.clone();
Ok(record)
} else {
Err(ContractError::NameNotExists { name })
Err(ContractError::NameNotExists { name: name.clone() })
maurolacy marked this conversation as resolved.
Show resolved Hide resolved
}
})?;
Ok(HandleResponse::default())
}

pub fn query<S: Storage, A: Api, Q: Querier>(
deps: &Extern<S, A, Q>,
env: Env,
msg: QueryMsg,
) -> StdResult<Binary> {
match msg {
QueryMsg::ResolveRecord { name } => query_resolver(deps, name),
QueryMsg::ResolveRecord { name } => query_resolver(deps, env, name),
QueryMsg::Config {} => to_binary(&config_read(&deps.storage).load()?),
}
}

fn query_resolver<S: Storage, A: Api, Q: Querier>(
deps: &Extern<S, A, Q>,
_env: Env,
name: String,
) -> StdResult<Binary> {
let key = name.as_bytes();
Expand Down
Loading