diff --git a/pom.xml b/pom.xml index 33e9f24..f49cff5 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.okexchain okexchain-java-sdk - 0.16.5 + 0.16.6 okexchain-java-sdk diff --git a/src/main/java/com/okexchain/msg/gov/MsgContractBlockedListProposal.java b/src/main/java/com/okexchain/msg/gov/MsgContractBlockedListProposal.java new file mode 100644 index 0000000..851dd31 --- /dev/null +++ b/src/main/java/com/okexchain/msg/gov/MsgContractBlockedListProposal.java @@ -0,0 +1,68 @@ +package com.okexchain.msg.gov; + +import com.okexchain.msg.MsgBase; +import com.okexchain.msg.common.Message; +import com.okexchain.msg.common.Token; +import com.okexchain.utils.Utils; + +import java.util.ArrayList; +import java.util.List; + +public class MsgContractBlockedListProposal extends MsgBase { + + public MsgContractBlockedListProposal() { + setMsgType("okexchain/gov/MsgSubmitProposal"); + } + + + public Message produceContractDeploymentWhitelistProposal( + String title, + String description, + String[] contractAddresses, + boolean isAdded, + String denom, + String amountDeposit + ) { + + // proposal + MsgContractBlockedListProposalValue proposal = new MsgContractBlockedListProposalValue(); + proposal.setTitle(title); + proposal.setDescription(description); + proposal.setContractAddresses(contractAddresses); + + proposal.setIsAdded(isAdded); + + return produceContractDeploymentWhitelistProposal(proposal,denom, amountDeposit); + } + + + public Message produceContractDeploymentWhitelistProposal( + MsgContractBlockedListProposalValue proposal, + String denom, + String amountDeposit + ) { + + // content + Content content = new Content<>(); + content.setType("okexchain/evm/ManageContractBlockedListProposal"); + content.setValue(proposal); + + // submit + List depositList = new ArrayList<>(); + Token deposit = new Token(); + deposit.setDenom(denom); + deposit.setAmount(Utils.NewDecString(amountDeposit)); + depositList.add(deposit); + + MsgSubmitProposalValue> value = new MsgSubmitProposalValue<>(); + value.setContent(content); + value.setInitialDeposit(depositList); + value.setProposer(this.address); + + Message>> msg = new Message<>(); + msg.setType(msgType); + msg.setValue(value); + return msg; + } + +} diff --git a/src/main/java/com/okexchain/msg/gov/MsgContractBlockedListProposalValue.java b/src/main/java/com/okexchain/msg/gov/MsgContractBlockedListProposalValue.java new file mode 100644 index 0000000..d712b54 --- /dev/null +++ b/src/main/java/com/okexchain/msg/gov/MsgContractBlockedListProposalValue.java @@ -0,0 +1,62 @@ +package com.okexchain.msg.gov; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.google.gson.annotations.SerializedName; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonPropertyOrder(alphabetic = true) +public class MsgContractBlockedListProposalValue { + + @JsonProperty("title") + @SerializedName("title") + private String title; + + + @JsonProperty("description") + @SerializedName("description") + private String description; + + @JsonProperty("contract_addresses") + @SerializedName("contract_addresses") + private String [] contractAddresses; + + + @JsonProperty("is_added") + @SerializedName("is_added") + private boolean isAdded; + + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) + .append("title", title) + .append("description", description) + .append("contract_addresses", contractAddresses) + .append("isAdded", isAdded) + .toString(); + } + + + public void setTitle(String title) { + this.title = title; + } + + + public void setDescription(String description) { + this.description = description; + } + + public void setContractAddresses(String[] contractAddresses) { + this.contractAddresses = contractAddresses; + } + + public void setIsAdded(boolean isAdded) { + this.isAdded = isAdded; + } + + +} \ No newline at end of file diff --git a/src/main/java/com/okexchain/msg/gov/MsgContractDeploymentWhitelistProposal.java b/src/main/java/com/okexchain/msg/gov/MsgContractDeploymentWhitelistProposal.java new file mode 100644 index 0000000..4ddf643 --- /dev/null +++ b/src/main/java/com/okexchain/msg/gov/MsgContractDeploymentWhitelistProposal.java @@ -0,0 +1,67 @@ +package com.okexchain.msg.gov; + +import com.okexchain.msg.MsgBase; +import com.okexchain.msg.common.Message; +import com.okexchain.msg.common.Token; +import com.okexchain.utils.Utils; + +import java.util.ArrayList; +import java.util.List; + +public class MsgContractDeploymentWhitelistProposal extends MsgBase { + + public MsgContractDeploymentWhitelistProposal() { + setMsgType("okexchain/gov/MsgSubmitProposal"); + } + + + public Message produceContractDeploymentWhitelistProposal( + String title, + String description, + String[] distributorAddresses, + boolean isAdded, + String denom, + String amountDeposit + ) { + + // proposal + MsgContractDeploymentWhitelistProposalValue proposal = new MsgContractDeploymentWhitelistProposalValue(); + proposal.setTitle(title); + proposal.setDescription(description); + proposal.setDistributorAddresses(distributorAddresses); + proposal.setIsAdded(isAdded); + + return produceContractDeploymentWhitelistProposal(proposal,denom, amountDeposit); + } + + + public Message produceContractDeploymentWhitelistProposal( + MsgContractDeploymentWhitelistProposalValue proposal, + String denom, + String amountDeposit + ) { + + // content + Content content = new Content<>(); + content.setType("okexchain/evm/ManageContractDeploymentWhitelistProposal"); + content.setValue(proposal); + + // submit + List depositList = new ArrayList<>(); + Token deposit = new Token(); + deposit.setDenom(denom); + deposit.setAmount(Utils.NewDecString(amountDeposit)); + depositList.add(deposit); + + MsgSubmitProposalValue> value = new MsgSubmitProposalValue<>(); + value.setContent(content); + value.setInitialDeposit(depositList); + value.setProposer(this.address); + + Message>> msg = new Message<>(); + msg.setType(msgType); + msg.setValue(value); + return msg; + } + +} diff --git a/src/main/java/com/okexchain/msg/gov/MsgContractDeploymentWhitelistProposalValue.java b/src/main/java/com/okexchain/msg/gov/MsgContractDeploymentWhitelistProposalValue.java new file mode 100644 index 0000000..06dff75 --- /dev/null +++ b/src/main/java/com/okexchain/msg/gov/MsgContractDeploymentWhitelistProposalValue.java @@ -0,0 +1,63 @@ +package com.okexchain.msg.gov; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import com.google.gson.annotations.SerializedName; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonPropertyOrder(alphabetic = true) +public class MsgContractDeploymentWhitelistProposalValue { + + @JsonProperty("title") + @SerializedName("title") + private String title; + + + @JsonProperty("description") + @SerializedName("description") + private String description; + + @JsonProperty("distributor_addresses") + @SerializedName("distributor_addresses") + private String[] distributorAddresses; + + + @JsonProperty("is_added") + @SerializedName("is_added") + private boolean isAdded; + + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE) + .append("title", title) + .append("description", description) + .append("distributorAddresses", distributorAddresses) + .append("isAdded", isAdded) + .toString(); + } + + + + public void setTitle(String title) { + this.title = title; + } + + + public void setDescription(String description) { + this.description = description; + } + + + public void setDistributorAddresses(String[] distributorAddresses) { + this.distributorAddresses = distributorAddresses; + } + + public void setIsAdded(boolean isAdded) { + this.isAdded = isAdded; + } + +} \ No newline at end of file diff --git a/src/main/java/com/okexchain/sample/Gov.java b/src/main/java/com/okexchain/sample/Gov.java index 006d51b..b792959 100644 --- a/src/main/java/com/okexchain/sample/Gov.java +++ b/src/main/java/com/okexchain/sample/Gov.java @@ -1,14 +1,13 @@ package com.okexchain.sample; +import com.alibaba.fastjson.JSONObject; import com.fasterxml.jackson.core.JsonProcessingException; import com.okexchain.env.EnvBase; import com.okexchain.env.EnvInstance; import com.okexchain.msg.MsgBase; -import com.okexchain.msg.gov.MsgDeListProposal; -import com.okexchain.msg.gov.MsgParameterChangeProposal; -import com.okexchain.msg.gov.MsgVote; import com.okexchain.msg.common.Message; import com.okexchain.msg.common.Signature; +import com.okexchain.msg.gov.*; import com.okexchain.msg.tx.BroadcastTx; import com.okexchain.msg.tx.UnsignedTx; import com.okexchain.utils.crypto.PrivateKey; @@ -21,6 +20,8 @@ public static void main(String[] args) throws JsonProcessingException { // testParameterChangeProposal(); // testDeListProposal(); testVote(); + testContractBlockedListProposal(); + testContractBlockedListProposalValue(); } static void testParameterChangeProposal() throws JsonProcessingException { @@ -103,4 +104,68 @@ static void testVote() { System.out.println("serialize transfer msg failed"); } } + + public static void testContractBlockedListProposal() { + EnvBase env = EnvInstance.getEnv(); + env.setChainID("okexchainevm-8"); + EnvInstance.getEnv().setRestServerUrl("http://localhost:8545"); + env.setDenom("okt"); + +// {"codespace":"sdk","code":4,"gas_used":"67065","gas_wanted":"2000000","raw_log":"unauthorized: signature verification failed; verify correct account sequence and chain-id, sign msg:{\"account_number\":\"2\",\"chain_id\":\"okexchainevm-8\",\"fee\":{\"amount\":[{\"amount\":\"0.030000000000000000\",\"denom\":\"okt\"}],\"gas\":\"2000000\"},\"memo\":\"\",\"msgs\":[{\"type\":\"okexchain/gov/MsgSubmitProposal\",\"value\":{\"content\":{\"type\":\"okexchain/evm/ManageContractBlockedListProposal\",\"value\":{\"contract_addresses\":[\"okexchain1hw4r48aww06ldrfeuq2v438ujnl6alsz0685a0\",\"okexchain1qj5c07sm6jetjz8f509qtrxgh4psxkv32x0qas\"],\"description\":\"String description\",\"is_added\":true,\"title\":\"String title\"}},\"initial_deposit\":[{\"amount\":\"100.000000000000000000\",\"denom\":\"okt\"}],\"proposer\":\"okexchain1qpel9c5wlrc30efaskqfgzrda7h3sd745rcxeh\"}}],\"sequence\":\"9\"}","height":"0","txhash":"8240A3B7734DEB2878BD629CEB2426E04E1D4E96C3A3E7E87CB1933DD2FD0A49"} + + + MsgContractBlockedListProposal msg = new MsgContractBlockedListProposal(); + msg.init(new PrivateKey("75dee45fc7b2dd69ec22dc6a825a2d982aee4ca2edd42c53ced0912173c4a788".toUpperCase())); + + String[] contractAddresses = new String[]{"okexchain1hw4r48aww06ldrfeuq2v438ujnl6alsz0685a0","okexchain1qj5c07sm6jetjz8f509qtrxgh4psxkv32x0qas"}; + + Message messages = msg.produceContractDeploymentWhitelistProposal( + "String title", + "String description", + contractAddresses, + true, + "okt", + "100.000000000000000000" + ); + + JSONObject res = msg.submit(messages, "0.03", "2000000", ""); + System.out.println(res.toJSONString()); + try { + boolean succeed = msg.isTxSucceed(res); + System.out.println("tx " + (succeed ? "succeed": "failed")); + } catch (Exception e) { + System.out.println(e.toString()); + } + } + + public static void testContractBlockedListProposalValue() { + EnvBase env = EnvInstance.getEnv(); + env.setChainID("okexchainevm-8"); + EnvInstance.getEnv().setRestServerUrl("http://localhost:8545"); + env.setDenom("okt"); + + + MsgContractDeploymentWhitelistProposal msg = new MsgContractDeploymentWhitelistProposal(); + msg.init(new PrivateKey("75dee45fc7b2dd69ec22dc6a825a2d982aee4ca2edd42c53ced0912173c4a788".toUpperCase())); + + String[] distributorAddresses = new String[]{"okexchain1hw4r48aww06ldrfeuq2v438ujnl6alsz0685a0","okexchain1qj5c07sm6jetjz8f509qtrxgh4psxkv32x0qas"}; + + Message messages = msg.produceContractDeploymentWhitelistProposal( + "String title", + "String description", + distributorAddresses, + true, + "okt", + "100.000000000000000000" + ); + + JSONObject res = msg.submit(messages, "0.03", "2000000", ""); + System.out.println(res.toJSONString()); + try { + boolean succeed = msg.isTxSucceed(res); + System.out.println("tx " + (succeed ? "succeed": "failed")); + } catch (Exception e) { + System.out.println(e.toString()); + } + } }