What does the assert() indicate here?
Here is code snippet,
function transfer(address _to, uint _value, bytes memory _data, string memory _custom_fallback) public returns (bool success) {
if(isContract(_to)) {
if (balanceOf(msg.sender) < _value) revert();
balances[msg.sender] = safeSub(balanceOf(msg.sender), _value);
balances[_to] = safeAdd(balanceOf(_to), _value);
assert(_to.call.value(0)(bytes4(keccak256(_custom_fallback)), msg.sender, _value, _data));
emit Transfer(msg.sender, _to, _value, _data);
return true;
}
else {
return transferToAddress(_to, _value, _data);
}
}
I am currently working with Solidity Version ^0.5.1
. What is the alternative and upgraded method to execute this assert function given below. And what is the main working of this assert()
and their arguments?
assert(_to.call.value(0)(bytes4(keccak256(_custom_fallback)), msg.sender, _value, _data));
solidity remix erc-223
add a comment |
Here is code snippet,
function transfer(address _to, uint _value, bytes memory _data, string memory _custom_fallback) public returns (bool success) {
if(isContract(_to)) {
if (balanceOf(msg.sender) < _value) revert();
balances[msg.sender] = safeSub(balanceOf(msg.sender), _value);
balances[_to] = safeAdd(balanceOf(_to), _value);
assert(_to.call.value(0)(bytes4(keccak256(_custom_fallback)), msg.sender, _value, _data));
emit Transfer(msg.sender, _to, _value, _data);
return true;
}
else {
return transferToAddress(_to, _value, _data);
}
}
I am currently working with Solidity Version ^0.5.1
. What is the alternative and upgraded method to execute this assert function given below. And what is the main working of this assert()
and their arguments?
assert(_to.call.value(0)(bytes4(keccak256(_custom_fallback)), msg.sender, _value, _data));
solidity remix erc-223
add a comment |
Here is code snippet,
function transfer(address _to, uint _value, bytes memory _data, string memory _custom_fallback) public returns (bool success) {
if(isContract(_to)) {
if (balanceOf(msg.sender) < _value) revert();
balances[msg.sender] = safeSub(balanceOf(msg.sender), _value);
balances[_to] = safeAdd(balanceOf(_to), _value);
assert(_to.call.value(0)(bytes4(keccak256(_custom_fallback)), msg.sender, _value, _data));
emit Transfer(msg.sender, _to, _value, _data);
return true;
}
else {
return transferToAddress(_to, _value, _data);
}
}
I am currently working with Solidity Version ^0.5.1
. What is the alternative and upgraded method to execute this assert function given below. And what is the main working of this assert()
and their arguments?
assert(_to.call.value(0)(bytes4(keccak256(_custom_fallback)), msg.sender, _value, _data));
solidity remix erc-223
Here is code snippet,
function transfer(address _to, uint _value, bytes memory _data, string memory _custom_fallback) public returns (bool success) {
if(isContract(_to)) {
if (balanceOf(msg.sender) < _value) revert();
balances[msg.sender] = safeSub(balanceOf(msg.sender), _value);
balances[_to] = safeAdd(balanceOf(_to), _value);
assert(_to.call.value(0)(bytes4(keccak256(_custom_fallback)), msg.sender, _value, _data));
emit Transfer(msg.sender, _to, _value, _data);
return true;
}
else {
return transferToAddress(_to, _value, _data);
}
}
I am currently working with Solidity Version ^0.5.1
. What is the alternative and upgraded method to execute this assert function given below. And what is the main working of this assert()
and their arguments?
assert(_to.call.value(0)(bytes4(keccak256(_custom_fallback)), msg.sender, _value, _data));
solidity remix erc-223
solidity remix erc-223
edited 1 hour ago
Aniket
2,1721733
2,1721733
asked 3 hours ago
RudrikaRudrika
749
749
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
assert(_to.call.value(0)(bytes4(keccak256(_custom_fallback)),
msg.sender, _value, _data));
- what is the main working of this assert() and their arguments?
This assert
is calling a function of _to
(when it is a contract) passed as a parameter in transfer
and checking the return value as true. bytes4(keccak256(_custom_fallback))
is used to select the function to execute and msg.sender, _value, _data
are the parameter values to pass in calling function. value(0)
signifies the sending of 0 wei with the call.
See related: Whats the difference between .call.value() and .call.value()()
- What is the alternative and upgraded method to execute this assert
function given below
You can use abi.encodeWithSignature(string memory signature, ...) returns (bytes memory)
as:
_to.call.value(0)(abi.encodeWithSignature(_custom_fallback, msg.sender, _value, _data));
See related: https://solidity.readthedocs.io/en/v0.5.3/units-and-global-variables.html#abi-encoding-and-decoding-functions
Thank you for the Answer...!
– Rudrika
1 hour ago
But Right now I am working with ERC223 token transfer, in that case does Signature Encoding is really applicable? Previously I have used keccak256(abi.encodePacked()) for this encoding. But there is wrong syntax or structure I have, so It didn't worked with _to.call.value(0).
– Rudrika
1 hour ago
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "642"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fethereum.stackexchange.com%2fquestions%2f66636%2fwhat-does-the-assert-indicate-here%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
assert(_to.call.value(0)(bytes4(keccak256(_custom_fallback)),
msg.sender, _value, _data));
- what is the main working of this assert() and their arguments?
This assert
is calling a function of _to
(when it is a contract) passed as a parameter in transfer
and checking the return value as true. bytes4(keccak256(_custom_fallback))
is used to select the function to execute and msg.sender, _value, _data
are the parameter values to pass in calling function. value(0)
signifies the sending of 0 wei with the call.
See related: Whats the difference between .call.value() and .call.value()()
- What is the alternative and upgraded method to execute this assert
function given below
You can use abi.encodeWithSignature(string memory signature, ...) returns (bytes memory)
as:
_to.call.value(0)(abi.encodeWithSignature(_custom_fallback, msg.sender, _value, _data));
See related: https://solidity.readthedocs.io/en/v0.5.3/units-and-global-variables.html#abi-encoding-and-decoding-functions
Thank you for the Answer...!
– Rudrika
1 hour ago
But Right now I am working with ERC223 token transfer, in that case does Signature Encoding is really applicable? Previously I have used keccak256(abi.encodePacked()) for this encoding. But there is wrong syntax or structure I have, so It didn't worked with _to.call.value(0).
– Rudrika
1 hour ago
add a comment |
assert(_to.call.value(0)(bytes4(keccak256(_custom_fallback)),
msg.sender, _value, _data));
- what is the main working of this assert() and their arguments?
This assert
is calling a function of _to
(when it is a contract) passed as a parameter in transfer
and checking the return value as true. bytes4(keccak256(_custom_fallback))
is used to select the function to execute and msg.sender, _value, _data
are the parameter values to pass in calling function. value(0)
signifies the sending of 0 wei with the call.
See related: Whats the difference between .call.value() and .call.value()()
- What is the alternative and upgraded method to execute this assert
function given below
You can use abi.encodeWithSignature(string memory signature, ...) returns (bytes memory)
as:
_to.call.value(0)(abi.encodeWithSignature(_custom_fallback, msg.sender, _value, _data));
See related: https://solidity.readthedocs.io/en/v0.5.3/units-and-global-variables.html#abi-encoding-and-decoding-functions
Thank you for the Answer...!
– Rudrika
1 hour ago
But Right now I am working with ERC223 token transfer, in that case does Signature Encoding is really applicable? Previously I have used keccak256(abi.encodePacked()) for this encoding. But there is wrong syntax or structure I have, so It didn't worked with _to.call.value(0).
– Rudrika
1 hour ago
add a comment |
assert(_to.call.value(0)(bytes4(keccak256(_custom_fallback)),
msg.sender, _value, _data));
- what is the main working of this assert() and their arguments?
This assert
is calling a function of _to
(when it is a contract) passed as a parameter in transfer
and checking the return value as true. bytes4(keccak256(_custom_fallback))
is used to select the function to execute and msg.sender, _value, _data
are the parameter values to pass in calling function. value(0)
signifies the sending of 0 wei with the call.
See related: Whats the difference between .call.value() and .call.value()()
- What is the alternative and upgraded method to execute this assert
function given below
You can use abi.encodeWithSignature(string memory signature, ...) returns (bytes memory)
as:
_to.call.value(0)(abi.encodeWithSignature(_custom_fallback, msg.sender, _value, _data));
See related: https://solidity.readthedocs.io/en/v0.5.3/units-and-global-variables.html#abi-encoding-and-decoding-functions
assert(_to.call.value(0)(bytes4(keccak256(_custom_fallback)),
msg.sender, _value, _data));
- what is the main working of this assert() and their arguments?
This assert
is calling a function of _to
(when it is a contract) passed as a parameter in transfer
and checking the return value as true. bytes4(keccak256(_custom_fallback))
is used to select the function to execute and msg.sender, _value, _data
are the parameter values to pass in calling function. value(0)
signifies the sending of 0 wei with the call.
See related: Whats the difference between .call.value() and .call.value()()
- What is the alternative and upgraded method to execute this assert
function given below
You can use abi.encodeWithSignature(string memory signature, ...) returns (bytes memory)
as:
_to.call.value(0)(abi.encodeWithSignature(_custom_fallback, msg.sender, _value, _data));
See related: https://solidity.readthedocs.io/en/v0.5.3/units-and-global-variables.html#abi-encoding-and-decoding-functions
answered 1 hour ago
AniketAniket
2,1721733
2,1721733
Thank you for the Answer...!
– Rudrika
1 hour ago
But Right now I am working with ERC223 token transfer, in that case does Signature Encoding is really applicable? Previously I have used keccak256(abi.encodePacked()) for this encoding. But there is wrong syntax or structure I have, so It didn't worked with _to.call.value(0).
– Rudrika
1 hour ago
add a comment |
Thank you for the Answer...!
– Rudrika
1 hour ago
But Right now I am working with ERC223 token transfer, in that case does Signature Encoding is really applicable? Previously I have used keccak256(abi.encodePacked()) for this encoding. But there is wrong syntax or structure I have, so It didn't worked with _to.call.value(0).
– Rudrika
1 hour ago
Thank you for the Answer...!
– Rudrika
1 hour ago
Thank you for the Answer...!
– Rudrika
1 hour ago
But Right now I am working with ERC223 token transfer, in that case does Signature Encoding is really applicable? Previously I have used keccak256(abi.encodePacked()) for this encoding. But there is wrong syntax or structure I have, so It didn't worked with _to.call.value(0).
– Rudrika
1 hour ago
But Right now I am working with ERC223 token transfer, in that case does Signature Encoding is really applicable? Previously I have used keccak256(abi.encodePacked()) for this encoding. But there is wrong syntax or structure I have, so It didn't worked with _to.call.value(0).
– Rudrika
1 hour ago
add a comment |
Thanks for contributing an answer to Ethereum Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fethereum.stackexchange.com%2fquestions%2f66636%2fwhat-does-the-assert-indicate-here%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown